zhaoyang 2 years ago
parent
commit
eb529fcc8b

+ 84 - 0
GameClient/Assets/Game/HotUpdate/ServerProxy/PictureStorageHelper.cs

@@ -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);
+                }
+
+            }
+
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/ServerProxy/PictureStorageHelper.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: e2cba6310d721b348b96a90ba582776d
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: