DownLoadItem.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Text;
  5. using UnityEngine;
  6. using UnityEngine.Networking;
  7. public class DownLoadItem : MonoBehaviour
  8. {
  9. /// <summary>
  10. /// 下载地址
  11. /// </summary>
  12. public string downLoadPath;
  13. /// <summary>
  14. /// 是否下载成功
  15. /// </summary>
  16. public bool isDownLoad;
  17. /// <summary>
  18. /// 下载成功后的文件
  19. /// </summary>
  20. public byte[] downLoadData;
  21. /// <summary>
  22. /// 进度条
  23. /// </summary>
  24. public float progress;
  25. /// <summary>
  26. /// 下载后状态
  27. /// </summary>
  28. public string downLoadState;
  29. private UnityWebRequest webRequest;
  30. private string baseurl = "http://office.ghz-tech.com:9904/api";
  31. public void Init(string downLoadPath, Action<bool> CallBacke)
  32. {
  33. this.downLoadPath = downLoadPath;
  34. StartCoroutine(DownloadFile(CallBacke));
  35. }
  36. private System.Collections.IEnumerator DownloadFile(Action<bool> CallBacke)
  37. {
  38. string url = baseurl + "/file/download";
  39. using (UnityWebRequest webRequest = new UnityWebRequest(url, "POST"))
  40. {
  41. byte[] bodyRaw = Encoding.UTF8.GetBytes(downLoadPath);
  42. webRequest.uploadHandler = (UploadHandler)new UploadHandlerRaw(bodyRaw);
  43. webRequest.SetRequestHeader("authorization", UserInfo.Instance.Token);
  44. webRequest.SendWebRequest();
  45. while (!webRequest.isDone)
  46. {
  47. // 此处可以显示下载进度条等UI操作
  48. progress = webRequest.downloadProgress;
  49. // Debug.Log("Download Progress: " + progress);
  50. yield return null;
  51. }
  52. if (webRequest.result == UnityWebRequest.Result.ConnectionError || webRequest.result == UnityWebRequest.Result.ProtocolError)
  53. {
  54. Debug.LogError("Download Failed: " + webRequest.error);
  55. // 下载失败
  56. downLoadState = webRequest.error;
  57. isDownLoad = false;
  58. }
  59. else
  60. {
  61. downLoadState = "下载成功";
  62. downLoadData = webRequest.downloadHandler.data;
  63. isDownLoad = true;
  64. MsgHandler.AddListener("AAAA", HandleMsg);
  65. Msg msg = new Msg("akdfakdf", new object());
  66. MsgHandler.SendMsg("AAA", msg)
  67. }
  68. CallBacke(isDownLoad);
  69. }
  70. }
  71. private void HandleMsg(Msg msg)
  72. {
  73. try
  74. {
  75. }
  76. catch (System.Exception e)
  77. {
  78. // ErrorLogPanel.Instance.Show(" 返回生成素材出现错误 " + e.Message);
  79. }
  80. }
  81. private void OnDestroy()
  82. {
  83. // 断开下载连接
  84. if (webRequest != null && !webRequest.isDone)
  85. {
  86. webRequest.Abort();
  87. }
  88. }
  89. }