using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Net; using System.Net.Http; using ET; using UnityEngine; using UnityEngine.Networking; namespace GFGGame { public static class PictureStorageHelper { //获取图片的临时上传地址协议 public static async ETTask ReqTempPictureUrl(int pictureType) { ViewManager.Show("上传中..."); S2C_GetTempPictureUrl response = null; response = (S2C_GetTempPictureUrl)await MessageHelper.SendToServer(new C2S_GetTempPictureUrl() { PictureType = pictureType }); if (response != null) { if (response.Error == ErrorCode.ERR_Success) { return new string[] { response.TempPictureUrl, response.PictureObjectPath }; } } else { ViewManager.Hide(); PromptController.Instance.ShowFloatTextPrompt("获取上传地址失败"); } return null; } //将图片上传到华为云 public static async ETTask PushToHWCloud(string signUrl, byte[] buffer) { HttpContent content = new ByteArrayContent(buffer); HttpClient httpClient = new HttpClient(new HttpClientHandler() { UseCookies = false }); HttpResponseMessage response = await httpClient.PutAsync(signUrl, content); response.EnsureSuccessStatusCode(); await response.Content.ReadAsStreamAsync(); if (response.StatusCode != HttpStatusCode.OK) { ViewManager.Hide(); PromptController.Instance.ShowFloatTextPrompt("上传资源失败"); return false; } else { return true; } } public static IEnumerator DownloadFile(string pictureTempUrl, Action callback) { using (UnityWebRequest request = UnityWebRequestTexture.GetTexture(pictureTempUrl)) { yield return request.SendWebRequest(); if (request.result == UnityWebRequest.Result.ProtocolError || request.result == UnityWebRequest.Result.ConnectionError) { DownloadFile(pictureTempUrl, callback); // PromptController.Instance.ShowFloatTextPrompt("下载失败"); // yield return null; } else { Texture2D texture = (request.downloadHandler as DownloadHandlerTexture).texture; callback(texture); } } } } }