C# HttpClient
public static async Task<string> UploadFileAsync(string uri, string fileName, byte[] fileData)
{
try
{
var httpClient = new HttpClient();
httpClient.Timeout = TimeSpan.FromSeconds(30f);
var content = new MultipartFormDataContent();
content.Add(new ByteArrayContent(fileData), "file", fileName);
var response = await httpClient.PostAsync(uri, content);
var str = await response.Content.ReadAsStringAsync();
return str;
}
catch (Exception e)
{
UnityEngine.Debug.LogError("Upload failed :"+e);
}
return null;
}
Unity UnityWebRequest
public static Task<bool> WriteAllBytesAsync(string uri, byte[] bytes)
{
var completionSource = new TaskCompletionSource<bool>();
UnityEngine.Debug.Log("---------------FileServer : Tack Create");
var fileName = new FileInfo(uri).Name;
var directoryName = uri.Replace(fileName, string.Empty);
var formData = new List<IMultipartFormSection>
{
new MultipartFormFileSection("file", bytes, fileName, null)
};
var request = UnityWebRequest.Post(directoryName, formData);
UnityEngine.Debug.Log("FileServer : Post");
request.timeout = DefaultTimeout;
request.SendWebRequest().completed += _ =>
{
if (request.result != UnityWebRequest.Result.Success)
{
UnityEngine.Debug.Log($"---------------FileServer : request.result {request.result}");
completionSource.SetResult(false);
request.Dispose();
return;
}
UnityEngine.Debug.Log($"---------------FileServer : request.result {request.result}");
UnityEngine.Debug.Log($"WXBuild: Write Zip Bytes finished {DateTime.Now.ToString("mm分:ss秒:fff毫秒")}");
completionSource.SetResult(true);
request.Dispose();
};
UnityEngine.Debug.Log($"---------------FileServer : request wait");
return completionSource.Task;
}