PictureStorageHelper.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  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)
  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. ET.Log.Debug("Download finish!!!");
  76. EventAgent.DispatchEvent(ConstMessage.GALLERY_DATA_CHANGE);
  77. }
  78. public static IEnumerator Download(List<PoemPhotoData> list)
  79. {
  80. for (int i = 0; i < list.Count; i++)
  81. {
  82. PoemPhotoData data = list[i];
  83. if (data == null || data.Ntexture != null) continue;
  84. using (UnityWebRequest request = UnityWebRequestTexture.GetTexture(data.PictureTempUrl))
  85. {
  86. yield return request.SendWebRequest();
  87. if (request.result == UnityWebRequest.Result.ProtocolError || request.result == UnityWebRequest.Result.ConnectionError)
  88. {
  89. PromptController.Instance.ShowFloatTextPrompt("下载失败");
  90. yield return null;
  91. }
  92. else
  93. {
  94. Texture2D texture = (request.downloadHandler as DownloadHandlerTexture).texture;
  95. data.Ntexture = new NTexture(texture);
  96. }
  97. }
  98. }
  99. ET.Log.Debug("Download finish!!!");
  100. EventAgent.DispatchEvent(ConstMessage.DOWNLOAD_FINISH);
  101. }
  102. }
  103. }