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;
}
}