|
@@ -0,0 +1,84 @@
|
|
|
+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<string[]> ReqTempPictureUrl(int pictureType)
|
|
|
+ {
|
|
|
+ ViewManager.Show<ModalStatusView>("上传中...");
|
|
|
+
|
|
|
+ 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<ModalStatusView>();
|
|
|
+ PromptController.Instance.ShowFloatTextPrompt("获取上传地址失败");
|
|
|
+ }
|
|
|
+
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ //将图片上传到华为云
|
|
|
+ public static async ETTask<bool> 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<ModalStatusView>();
|
|
|
+ PromptController.Instance.ShowFloatTextPrompt("上传资源失败");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ public static IEnumerator DownloadFile(string pictureTempUrl, Action<Texture2D> callback)
|
|
|
+ {
|
|
|
+ ET.Log.Debug("PictureTempUrl:" + pictureTempUrl);
|
|
|
+ using (UnityWebRequest request = UnityWebRequestTexture.GetTexture(pictureTempUrl))
|
|
|
+ {
|
|
|
+ yield return request.SendWebRequest();
|
|
|
+ if (request.result == UnityWebRequest.Result.ProtocolError || request.result == UnityWebRequest.Result.ConnectionError)
|
|
|
+ {
|
|
|
+ ET.Log.Debug("Error: " + request.error);
|
|
|
+
|
|
|
+ DownloadFile(pictureTempUrl, callback);
|
|
|
+ // yield return null;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+
|
|
|
+ Texture2D texture = (request.downloadHandler as DownloadHandlerTexture).texture;
|
|
|
+ callback(texture);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|