PictureStorageHelper.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.IO;
  5. using System.Net;
  6. using System.Net.Http;
  7. using ET;
  8. using FairyGUI;
  9. using UnityEngine;
  10. using UnityEngine.Networking;
  11. namespace GFGGame
  12. {
  13. public static class PictureStorageHelper
  14. {
  15. //获取图片的临时上传地址协议
  16. public static async ETTask<string[]> ReqTempPictureUrl(int pictureType)
  17. {
  18. ViewManager.Show<ModalStatusView>("上传中...");
  19. S2C_GetTempPictureUrl response = null;
  20. response = (S2C_GetTempPictureUrl)await MessageHelper.SendToServer(new C2S_GetTempPictureUrl() { PictureType = pictureType });
  21. if (response != null)
  22. {
  23. if (response.Error == ErrorCode.ERR_Success)
  24. {
  25. return new string[] { response.TempPictureUrl, response.PictureObjectPath };
  26. }
  27. }
  28. else
  29. {
  30. ViewManager.Hide<ModalStatusView>();
  31. PromptController.Instance.ShowFloatTextPrompt("获取上传地址失败");
  32. }
  33. return null;
  34. }
  35. //将图片上传到华为云
  36. public static async ETTask<bool> PushToHWCloud(string signUrl, byte[] buffer)
  37. {
  38. HttpContent content = new ByteArrayContent(buffer);
  39. HttpClient httpClient = new HttpClient(new HttpClientHandler() { UseCookies = false });
  40. HttpResponseMessage response = await httpClient.PutAsync(signUrl, content);
  41. response.EnsureSuccessStatusCode();
  42. await response.Content.ReadAsStreamAsync();
  43. if (response.StatusCode != HttpStatusCode.OK)
  44. {
  45. ViewManager.Hide<ModalStatusView>();
  46. PromptController.Instance.ShowFloatTextPrompt("上传资源失败");
  47. return false;
  48. }
  49. else
  50. {
  51. return true;
  52. }
  53. }
  54. public static IEnumerator Download(List<long> list, int startIndex, Action callBack = null)
  55. {
  56. for (int i = startIndex; i < list.Count; i++)
  57. {
  58. PoemGalleryData data = PoemGalleryDataManager.Instance.GetGalleryDataById(list[i]);
  59. if (data.Ntexture != null) continue;
  60. using (UnityWebRequest request = UnityWebRequestTexture.GetTexture(data.PictureTempUrl))
  61. {
  62. yield return request.SendWebRequest();
  63. if (request.result == UnityWebRequest.Result.ProtocolError || request.result == UnityWebRequest.Result.ConnectionError)
  64. {
  65. PromptController.Instance.ShowFloatTextPrompt("下载失败");
  66. yield return null;
  67. }
  68. else
  69. {
  70. Texture2D texture = (request.downloadHandler as DownloadHandlerTexture).texture;
  71. data.Ntexture = new NTexture(texture);
  72. }
  73. }
  74. }
  75. if (callBack != null) callBack();
  76. ET.Log.Debug("Download finish!!!");
  77. EventAgent.DispatchEvent(ConstMessage.DOWNLOAD_FINISH);
  78. }
  79. public static IEnumerator Download(List<PoemPhotoData> list)
  80. {
  81. for (int i = 0; i < list.Count; i++)
  82. {
  83. PoemPhotoData data = list[i];
  84. if (data == null || data.Ntexture != null) continue;
  85. using (UnityWebRequest request = UnityWebRequestTexture.GetTexture(data.PictureTempUrl))
  86. {
  87. yield return request.SendWebRequest();
  88. if (request.result == UnityWebRequest.Result.ProtocolError || request.result == UnityWebRequest.Result.ConnectionError)
  89. {
  90. PromptController.Instance.ShowFloatTextPrompt("下载失败");
  91. yield return null;
  92. }
  93. else
  94. {
  95. Texture2D texture = (request.downloadHandler as DownloadHandlerTexture).texture;
  96. data.Ntexture = new NTexture(texture);
  97. }
  98. }
  99. }
  100. ET.Log.Debug("Download finish!!!");
  101. EventAgent.DispatchEvent(ConstMessage.DOWNLOAD_FINISH);
  102. }
  103. }
  104. }