C#向web服務器上傳圖片和視頻

1、解釋說明:

WWWFORM.AddBinaryData(string fieldName,byte [] contents,string fileName = null,string mimeType = null);

包含四個參數重載:

string fieldName:字段名(也就是表單元素的name,類似於html表單的) ;

byte [] contents:二進制數據(文件轉換的二進制數據);

string fileName = null:文件名(即交託服務器的文件名稱,包含文件後綴,如果爲空,服務器會默認文件爲dat類型);

如果mimeType沒有給出,並且數據的前8個字節與PNG格式標題匹配,則數據以“ image/png”mimetype 發送。否則它將以“ application/octet-stream”mimetype 發送。

實際應用中給定前三個參數就足夠了;

方法一:
//public Image imgae;
string url = “http://192.168.3.122”;
//string CreateURL = “http://192.168.3.122//CreatFolder.php”;
//string DelURL = “http://192.168.3.122//DelFolder.php”;

    string PicturePath = @"file://D:\EmergencySinglePlayerEditor\Assets\Art\Texture\UI\大海.jpg";

    public RawImage myRaw;

    public Texture2D m_uploadImage;


    [AddBindPath( "UpVideoBtn" )]
    [SerializeField]
    private Button m_UpVideoBtn;

    [AddBindPath( "UpSpriteBtn" )]
    [SerializeField]
    private Button m_UpSpriteBtn;

    private void Awake()
    {
        StartCoroutine( ReadPic() );
    }

    IEnumerator ReadPic()
    {
        WWW www = new WWW( PicturePath );
        yield return www;
        if ( www.error != null )
        {
           // m_info = www.error;
            yield return null;
        }
        m_uploadImage = www.texture;
    }



    public override void Init()
    {
       
        m_UpVideoBtn.onClick.AddListener( UpVideo );
        m_UpSpriteBtn.onClick.AddListener( UpSprite );
    }




    private void OnDestroy()
    {
        StopAllCoroutines();
    }
    /// <summary>
    /// 上傳圖片。
    /// </summary>
    private void UpSprite()
    {
        //StartCoroutine( CreatFolder( "Photos" ) );//在服務器上創建文件夾
        //StartCoroutine(DelFolder("Photos"));//在服務器上刪除文件夾
       // StartCoroutine( Upload() );//上傳圖片到服務器指定的文件夾

        StartCoroutine( IRequestPic() );
    }

    /// <summary>
    /// 上傳視頻。
    /// </summary>
    private void UpVideo()
    {
      //  StartCoroutine( UploadVideo() );//上傳視頻到服務器指定的文件夾
    }

    #region 上傳圖片
    /// <summary>
    /// 服務器下載圖片
    /// </summary>
    /// <returns></returns>
    //IEnumerator DownLoadPic()
    //{
    //    WWW www = new WWW( "http://127.0.0.1:8088/upload/xxx.png" );
    //    yield return www;
    //    if ( www.error != null )
    //    {
    //        Debug.LogError( www.error );
    //        yield return null;
    //    }
    //    myRaw.texture = www.texture;
    //}

    /// <summary>
    /// 圖片上傳服務器
    /// </summary>
    /// <returns></returns>
    IEnumerator IRequestPic()
    {
        WWWForm form = new WWWForm();
        form.AddField( "folder", "upload/" );
        form.AddBinaryData( "Pic", m_uploadImage.EncodeToPNG(), "大海.png", "image/png" );
        WWW www = new WWW( url, form );
        yield return www;
        if ( www.error != null )
        {
            Debug.LogError( www.error );
            yield return null;
        }
        if ( www.isDone )
        {
            Debug.LogError( "上傳成功" );
            //StartCoroutine( DownLoadPic() );
        }
        Debug.LogError( www.text );
    }

    #endregion


    #region 上傳視頻
    // string url = "http://localhost:8888/upload_file.php";
    // 上傳視頻
    //IEnumerator UploadVideo()
    //{
    //    byte[] videoByte = File.ReadAllBytes( "/Users/administrator/Desktop/video.mp4" );
    //    WWWForm form = new WWWForm();
    //    form.AddBinaryData( "file", videoByte, "myVideo.mp4", "video/mp4" );

    //    using ( UnityWebRequest www = UnityWebRequest.Post( url, form ) )
    //    {
    //        yield return www.SendWebRequest();

    //        if ( www.isNetworkError || www.isHttpError )
    //        {
    //            Debug.Log( www.error );
    //        }
    //        else
    //        {
    //            Debug.Log( "Form upload complete!" );
    //        }
    //    }
    //}
    #endregion


方法二:

public Image imgae;
string url = "http://192.168.3.68/Upload.php";
string CreateURL = "http://。。。。/CreatFolder.php";
string DelURL = "http://。。。。/DelFolder.php";

void Start()
{
    StartCoroutine( CreatFolder( "Photos" ) );//在服務器上創建文件夾
    //StartCoroutine(DelFolder("Photos"));//在服務器上刪除文件夾
    //StartCoroutine(Upload());//上傳圖片到服務器指定的文件夾
}

//創建文件夾
IEnumerator CreatFolder( string FolderName )
{
    WWWForm wForm = new WWWForm();
    wForm.AddField( "FolderName", FolderName );
    WWW w = new WWW( CreateURL, wForm );
    yield return w;
    if ( w.isDone )
    {
        Debug.Log( "創建文件夾完成" );
    }
}

//刪除文件夾
IEnumerator DelFolder( string FolderName )
{
    WWWForm wForm = new WWWForm();
    wForm.AddField( "FolderName", FolderName );
    WWW w = new WWW( DelURL, wForm );
    yield return w;
    if ( w.isDone )
    {
        Debug.Log( "刪除文件夾完成" );
    }
}

//上傳圖片到指定的文件夾
IEnumerator Upload()
{
    byte[] bytes = SpriteToBytes( imgae.sprite );//獲取圖片數據
    WWWForm form = new WWWForm();//創建提交數據表單
    form.AddField( "folder", "Photos/" );//定義表單字段用來定義文件夾
    form.AddBinaryData( "file", bytes, "11.png", "image/png" );//字段名,文件數據,文件名,文件類型
    WWW w = new WWW( url, form );
    yield return w;
    if ( w.isDone )
    {
        Debug.Log( "上傳完成" );
    }
}

//獲取圖片的二進制數據
public byte[] SpriteToBytes( Sprite sp )
{
    Texture2D t = sp.texture;
    byte[] bytes = t.EncodeToJPG();
    return bytes;
}

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章