DownLoadItem.cs 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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("",)
  65. }
  66. CallBacke(isDownLoad);
  67. }
  68. }
  69. private void OnDestroy()
  70. {
  71. // 断开下载连接
  72. if (webRequest != null && !webRequest.isDone)
  73. {
  74. webRequest.Abort();
  75. }
  76. }
  77. }