Browse Source

更新上传

DGJ 1 year ago
parent
commit
224b74a7e8

+ 27 - 1
Assets/FrameWork/ProjectManager/Scripts/JinRuRenwu.cs

@@ -1,5 +1,6 @@
 using Immersal.AR;
 using LitJson;
+using Newtonsoft.Json.Linq;
 using System.Collections;
 using System.Collections.Generic;
 using TMPro;
@@ -184,7 +185,7 @@ public class JinRuRenwu : WindowSingleton<JinRuRenwu>
         TextBT.SetActive(false);
         // rwitem = XunJianDataManager.Instance.chooseXunJian.itemList[XunJianDataManager.Instance.chooseXunJian.nowIndex];
         rwitem = XunJianDataManager.Instance.chooseXunJian.tasksList[XunJianDataManager.Instance.chooseXunJian.nowIndex];
-        indexText.text = (rwitem.index+1).ToString();
+        indexText.text = (rwitem.sort).ToString();
         // info.text = rwitem.info;
         info.text = rwitem.title;
         #region MyRegion
@@ -577,6 +578,31 @@ public class JinRuRenwu : WindowSingleton<JinRuRenwu>
         saotuTip.SetActive(false);
         StartGo.SetActive(true);
         ARSpace.isFind = false;
+        // 任务上报  
+
+        JsonData jsonData = new JsonData();
+        jsonData[""] = rwitem.projectId;
+
+        //WindowsManager.Instance.StartCoroutine(HttpTool.Instance.SendHttp("", "", msg =>
+        //{
+
+        //    JObject data = new JObject();
+
+
+
+        //    if(data["code"].ToString()=="200")
+        //    {
+
+        //        Debug.Log("上报成功" + msg);
+        //    }
+        //    else
+        //    {
+        //        Debug.LogError(" 上报失败"+ msg);
+        //    }
+
+        //}));
+
+
 
         TimerMgr.Instance.CreateTimer(() => {
             kong.SetActive(!kong.activeSelf);

+ 140 - 87
Assets/FrameWork/ProjectManager/Scripts/Project/XunJian/XunJianDataManager.cs

@@ -383,13 +383,22 @@ public class XunJianDataManager : Singleton<XunJianDataManager>
     }
     IEnumerator testBack(Action<List<XunJianListData>> callback)
     {
-        yield return WindowsManager.Instance.StartCoroutine(HttpTool.Instance.SendHttp(HttpEdustryAction.InspectionList, "", (string msg) =>
+        // 加入分页查询
+
+        JsonData jsonData = new JsonData();
+        jsonData["page"] = 1;
+        jsonData["limit"] = 50;
+        Debug.Log(jsonData.ToJson());
+        yield return WindowsManager.Instance.StartCoroutine(HttpTool.Instance.SendHttp(HttpEdustryAction.InspectionList, jsonData.ToJson(), (string msg) =>
         {
             Debug.Log("DGJ ===>InspectionList  " + msg);
             JObject jObject = JObject.Parse(msg);
             if (jObject["code"].ToString() == "200")
             {
                 List<XunJianData> data = JsonConvert.DeserializeObject<List<XunJianData>>(jObject["data"]["list"].ToString());
+                int listConunt = int.Parse(jObject["data"]["count"].ToString());
+
+                Debug.Log(HttpEdustryAction.InspectionList +" Count " +listConunt);
                 if(WindowsManager.Instance.isTest)
                 {
                     xjDataList.Add(testData3());
@@ -397,90 +406,92 @@ public class XunJianDataManager : Singleton<XunJianDataManager>
                     xjDataList.Add(testData2());
                 }
 
-                /*
-      * 1是否为异常巡检>2是否逾期>3是否更新>4接收时间
-         1. 异常巡检项目>常规巡检项目
-         2. 已逾期>即将开始>未到逾期提醒>进行中>已完成
-         3. 新项目>已更新>未更新项目
-         4. 新接收时间>老接收时间
-
-
-         新项目 : 接受发布时间在24小时内
-     */
-                // 排序
-
-
-
-                // var data2 = data.OrderBy(XunJianData => XunJianData.projectType);
-                //                   .ThenBy(XunJianData => XunJianData.projectState)
-                //                   .ThenBy(XunJianData => XunJianData.projectTime);
-
-                for (int i = 0; i < data.Count; i++)
-                {
-                    int sortStatus = 10;
-                    switch (data[i].status)
-                    {
-                        case 1:
-                            sortStatus = 3;
-                            break;
-                        case 2:
-                            sortStatus = 2;
-                            break;
-                        case 3:
-                            sortStatus = 1;
-                            break;
-                        case 4:
-                            sortStatus = 4;
-                            break;
-                        case 5:
-                            sortStatus = 5;
-                            break;
-                        default:
-                            break;
-                    }
-
-                    int sortType = 10;
-                    if(data[i].publishTime == data[i].firstPublishTime)
-                    {
-                        DateTime publishTime = UnixTimeStampToDateTime(data[i].publishTime);
-                        DateTime nowTime = UnixTimeStampToDateTime(GetHttpTimer.Instance.timestamp);
-
-                        if (IsWithin24Hours(publishTime, nowTime))
-                        {
-                            sortType = 1;
-                        }
-                        else
-                        {
-                            sortType = 3;
-                        }
-                    }
-                    else
-                    {
-                        sortType = 2;
-                    }
-                    data[i].sort_projectStatus = sortStatus;
-                    data[i].sort_status = sortStatus;
-
-
-                    
-                }
-
-                var data2 = data.OrderByDescending(XunJianData => XunJianData.type)
-                                .ThenBy(XunJianData => XunJianData.sort_status)
-                                .ThenBy(XunJianData => XunJianData.sort_projectStatus)
-                                .ThenByDescending(XunJianData => XunJianData.publishTime);
-
-                List<XunJianData> data3 = new List<XunJianData>();
-                foreach (XunJianData item in data2)
-                {
-                    data3.Add(item);
-                }
-
-                Debug.Log("DGJ  ===>  排序后   " + JsonConvert.SerializeObject(data3));
-
-                xjDataList.AddRange(XunJianDataParetListData(data3));
-
-
+                #region old 排序
+                //           /*
+                // * 1是否为异常巡检>2是否逾期>3是否更新>4接收时间
+                //    1. 异常巡检项目>常规巡检项目
+                //    2. 已逾期>即将开始>未到逾期提醒>进行中>已完成
+                //    3. 新项目>已更新>未更新项目
+                //    4. 新接收时间>老接收时间
+
+
+                //    新项目 : 接受发布时间在24小时内
+                //*/
+                //           // 排序
+
+
+
+                //           // var data2 = data.OrderBy(XunJianData => XunJianData.projectType);
+                //           //                   .ThenBy(XunJianData => XunJianData.projectState)
+                //           //                   .ThenBy(XunJianData => XunJianData.projectTime);
+
+                //           for (int i = 0; i < data.Count; i++)
+                //           {
+                //               int sortStatus = 10;
+                //               switch (data[i].status)
+                //               {
+                //                   case 1:
+                //                       sortStatus = 3;
+                //                       break;
+                //                   case 2:
+                //                       sortStatus = 2;
+                //                       break;
+                //                   case 3:
+                //                       sortStatus = 1;
+                //                       break;
+                //                   case 4:
+                //                       sortStatus = 4;
+                //                       break;
+                //                   case 5:
+                //                       sortStatus = 5;
+                //                       break;
+                //                   default:
+                //                       break;
+                //               }
+
+                //               int sortType = 10;
+                //               if(data[i].publishTime == data[i].firstPublishTime)
+                //               {
+                //                   DateTime publishTime = UnixTimeStampToDateTime(data[i].publishTime);
+                //                   DateTime nowTime = UnixTimeStampToDateTime(GetHttpTimer.Instance.timestamp);
+
+                //                   if (IsWithin24Hours(publishTime, nowTime))
+                //                   {
+                //                       sortType = 1;
+                //                   }
+                //                   else
+                //                   {
+                //                       sortType = 3;
+                //                   }
+                //               }
+                //               else
+                //               {
+                //                   sortType = 2;
+                //               }
+                //               data[i].sort_projectStatus = sortStatus;
+                //               data[i].sort_status = sortStatus;
+
+
+
+                //           }
+
+                //           var data2 = data.OrderByDescending(XunJianData => XunJianData.type)
+                //                           .ThenBy(XunJianData => XunJianData.sort_status)
+                //                           .ThenBy(XunJianData => XunJianData.sort_projectStatus)
+                //                           .ThenByDescending(XunJianData => XunJianData.publishTime);
+
+                //           List<XunJianData> data3 = new List<XunJianData>();
+                //           foreach (XunJianData item in data2)
+                //           {
+                //               data3.Add(item);
+                //           }
+
+                //           Debug.Log("DGJ  ===>  排序后   " + JsonConvert.SerializeObject(data3));
+
+                //           xjDataList.AddRange(XunJianDataParetListData(data3)); 
+                #endregion
+                xjDataList.AddRange(XunJianDataParetListData(data));
+                
                 peopleList = new Dictionary<string, List<XunJianListData>>();
                 areaList = new Dictionary<string, List<XunJianListData>>();
                 for (int i = 0; i < xjDataList.Count; i++)
@@ -546,7 +557,27 @@ public class XunJianDataManager : Singleton<XunJianDataManager>
             xj.projectTime = data[i].inspectionTime.ToString();
             xj.updateState = data[i].status > 3 ? "已更新" : "新项目";
             xj.listWall = data[i].listWall;
-          
+
+            switch (data[i].status)
+            {
+                case 1:
+                    xj.updateState = "已完成";
+                    break;
+                case 2:
+                    xj.updateState = "进行中";
+                    break;
+                case 3:
+                    xj.updateState = "未开始";
+                    break;
+                case 4:
+                    xj.updateState = "即将开始";
+                    break;
+                case 5:
+                    xj.updateState = "已逾期";
+                    break;
+                default:
+                    break;
+            }
             switch (data[i].regionMapType)
             {
                 case 0:
@@ -748,9 +779,29 @@ public class XunJianDataManager : Singleton<XunJianDataManager>
         /// </summary>
         public List<MinioResources> resources { get; set; }
         /// <summary>
+        /// 项目ID
+        /// </summary>
+        public int projectId { get; set; }
+
+        public int projectInspectionId { get; set; }
+
+        public List<MinioResources> data { get; set; }
+        /// <summary>
+        /// 状态 0:未完成 1:正常 2:异常
+        /// </summary>
+        public int status { get; set; }
+        /// <summary>
+        ///  完成时间
+        /// </summary>
+        public long completionTime { get; set; }
+        /// <summary>
+        /// 执行顺序
+        /// </summary>
+        public int sort { get; set; }
+        /// <summary>
         ///  当前项目任务下标
         /// </summary>
-        public int index { get; set; }
+     //   public int index { get; set; }
         /// <summary>
         ///  任务路径
         /// </summary>
@@ -759,6 +810,8 @@ public class XunJianDataManager : Singleton<XunJianDataManager>
          public ImageFileSourceData imageData { get; set; }
 
         public RenWuState state =  RenWuState.None;
+
+        public List<string> listUpload = new List<string>();
     }
 
     public class MinioResources

+ 86 - 1
Assets/FrameWork/ProjectManager/Scripts/Project/XunJian/进入任务/ChangeCameraSaoMiao.cs

@@ -1,6 +1,7 @@
 using easyar;
 using LitJson;
 using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
 using RenderHeads.Media.AVProMovieCapture;
 using System;
 using System.Collections;
@@ -190,7 +191,12 @@ public class ChangeCameraSaoMiao : MonoSingleton<ChangeCameraSaoMiao>
                 timerText.text="REC  "+ TimeToString(FrameOutTime);
 
             },1f,-1);
-        }    
+
+
+
+
+        
+    }    
     }
 
     private void OnCompletedFileWritingAction(FileWritingHandler obj)
@@ -199,6 +205,79 @@ public class ChangeCameraSaoMiao : MonoSingleton<ChangeCameraSaoMiao>
         paizhaoData data = new paizhaoData();
         data.url = pathVideo;
         PaiZhaoManager.Instance.addVidew(data);
+
+
+        // 文件预上传
+
+        FileInfo fileInfo = new FileInfo(pathVideo);
+        long sizeInBytes = fileInfo.Length;
+        JsonData jData = new JsonData();
+        jData["size"] = sizeInBytes;
+        jData["ext"] = "mp4";
+        jData["name"] = name;
+
+        JsonData fileData = new JsonData();
+        fileData["filePath"] = pathVideo;
+        fileData["fileSize"] = sizeInBytes;
+        fileData["fileName"] = Path.GetFileName(pathVideo);
+        // project /{ projectId}/ inspection /{ projectInspectionId}/{ taskId}
+        fileData["objectName"] = "project/" + XunJianDataManager.Instance.chooseXunJian.tasksList[XunJianDataManager.Instance.chooseXunJian.nowIndex].projectId + "/inspection/" + XunJianDataManager.Instance.chooseXunJian.tasksList[XunJianDataManager.Instance.chooseXunJian.nowIndex].projectInspectionId + "/" + XunJianDataManager.Instance.chooseXunJian.tasksList[XunJianDataManager.Instance.chooseXunJian.nowIndex].id + "/";
+
+        WindowsManager.Instance.StartCoroutine(HttpTool.Instance.SendHttp(HttpEdustryAction.storage_projectUploadObject, jData.ToJson(), fileData.ToJson(), async (List<string> str) =>
+        {
+            Debug.Log(HttpEdustryAction.storage_projectUploadObject + "  " + str[0]);
+
+            JObject jObject = JObject.Parse(str[0]);
+
+            if (jObject["code"].ToString() == "200")
+            {
+
+
+
+                JObject fildData = JObject.Parse(str[1]);
+                // 文件上传
+                RoomFileMinio.Instance.PutFile(RoomFileMinio.Instance.bucket, fildData["filePath"].ToString(), fildData["fileName"].ToString(), fildData["objectName"].ToString() + jObject["data"]["uuid"].ToString() + ".mp4", jObject["data"]["uuid"].ToString(), int.Parse(fildData["fileSize"].ToString()), msg =>
+                {
+
+                    // 存入file
+
+                    // XunJianDataManager.Instance.chooseXunJian.tasksList[]
+
+                    if (msg != null)
+                    {
+
+                        Debug.Log(" 文件上传成功 " + msg);
+
+                        string[] listStr = msg.Split('/');
+
+                        int id = int.Parse(listStr[listStr.Length - 2]);
+
+                        for (int i = 0; i < XunJianDataManager.Instance.chooseXunJian.tasksList.Count; i++)
+                        {
+                            if (XunJianDataManager.Instance.chooseXunJian.tasksList[i].id == id)
+                            {
+                                XunJianDataManager.Instance.chooseXunJian.tasksList[i].listUpload.Add(listStr[listStr.Length - 1]);
+                                break;
+                            }
+                        }
+
+                    }
+                    else
+                    {
+                        Debug.LogError("文件上传失败");
+                    }
+
+
+                });
+
+            }
+            else
+            {
+                Debug.LogError("文件预上传失败 " + str);
+            }
+
+        }));
+
     }
 
     public string TimeToString(int result)
@@ -219,6 +298,12 @@ public class ChangeCameraSaoMiao : MonoSingleton<ChangeCameraSaoMiao>
             caTexture.StopCapture();
             isLuXiang = false;
             timerText.text = "REC  00:00:00" ;
+
+
+
+
+
+
         }
     }
     int FrameOutTime;

+ 87 - 0
Assets/FrameWork/ProjectManager/Scripts/Project/XunJian/进入任务/PaiZhaoDataManager.cs

@@ -1,5 +1,6 @@
 
 using LitJson;
+using Newtonsoft.Json.Linq;
 using System.Collections;
 using System.Collections.Generic;
 using System.IO;
@@ -17,6 +18,12 @@ public class PaiZhaoDataManager : Singleton<PaiZhaoDataManager>
     }
     IEnumerator GetTextureTo2D(Texture tex)
     {
+        int fileSize = -1;
+
+        string fileName = "-1";
+
+        string filePath = "";
+
         var req = AsyncGPUReadback.Request(tex,0, TextureFormat.ARGB32);
         yield return new WaitUntil(() => req.done);
         if (!req.hasError)
@@ -28,6 +35,7 @@ public class PaiZhaoDataManager : Singleton<PaiZhaoDataManager>
             texture2D.LoadRawTextureData(bts);
 
             bts = texture2D.EncodeToPNG();
+            fileSize = bts.Length;
             WindowsManager.Instance.DestroyText2D(texture2D);
             Debug.Log("准备存文件===》" + bts.Length);
             int count = 0;
@@ -37,7 +45,10 @@ public class PaiZhaoDataManager : Singleton<PaiZhaoDataManager>
             //StreamWriter sw;  
             Stream sw;
             string name = count+".png";
+            fileName = name;
             string path = Application.persistentDataPath + "/PaiZhao/" + XunJianDataManager.Instance.chooseXunJian.id + "/" + XunJianDataManager.Instance.chooseXunJian.nowIndex + "/" + name;
+
+            filePath = path;
             Debug.Log("准备存文件===》" + path);
             FileInfo file = new FileInfo(path);
             try
@@ -97,6 +108,82 @@ public class PaiZhaoDataManager : Singleton<PaiZhaoDataManager>
         {
             Debug.LogError("Error AsyncGPUReadbackRequest.hasError");
         }
+
+        if (fileSize != -1)
+        {
+            // 文件预上传
+            JsonData jData = new JsonData();
+            jData["size"] = fileSize;
+            jData["ext"] = "jpg";
+            jData["name"] = fileName;
+
+            JsonData fileData = new JsonData();
+            fileData["filePath"] = filePath;
+            fileData["fileSize"] = fileSize;
+            fileData["fileName"] = fileName;
+            // project /{ projectId}/ inspection /{ projectInspectionId}/{ taskId}
+            fileData["objectName"] = "project/" + XunJianDataManager.Instance.chooseXunJian.tasksList[XunJianDataManager.Instance.chooseXunJian.nowIndex].projectId + "/inspection/" + XunJianDataManager.Instance.chooseXunJian.tasksList[XunJianDataManager.Instance.chooseXunJian.nowIndex].projectInspectionId + "/" + XunJianDataManager.Instance.chooseXunJian.tasksList[XunJianDataManager.Instance.chooseXunJian.nowIndex].id + "/";
+
+            WindowsManager.Instance.StartCoroutine(HttpTool.Instance.SendHttp(HttpEdustryAction.storage_projectUploadObject, jData.ToJson(), fileData.ToJson(), async (List<string> str) =>
+            {
+                Debug.Log(HttpEdustryAction.storage_projectUploadObject + "  " + str[0]);
+
+                JObject jObject = JObject.Parse(str[0]);
+
+            if (jObject["code"].ToString() == "200")
+            {
+
+                    
+
+                    JObject fildData = JObject.Parse(str[1]);
+                    // 文件上传
+                    RoomFileMinio.Instance.PutFile(RoomFileMinio.Instance.bucket, fildData["filePath"].ToString(), fildData["fileName"].ToString(), fildData["objectName"].ToString()+ jObject["data"]["uuid"].ToString()+".jpg", jObject["data"]["uuid"].ToString(),int.Parse(fildData["fileSize"].ToString()), msg =>
+                    {
+
+                        // 存入file
+
+                       // XunJianDataManager.Instance.chooseXunJian.tasksList[]
+
+                        if(msg!=null)
+                        {
+
+                            Debug.Log(" 文件上传成功 " + msg);
+
+                            string [] listStr = msg.Split('/');
+
+                            int id = int.Parse(listStr[listStr.Length - 2]);
+
+                            for (int i = 0; i < XunJianDataManager.Instance.chooseXunJian.tasksList.Count; i++)
+                            {
+                                if(XunJianDataManager.Instance.chooseXunJian.tasksList[i].id == id)
+                                {
+                                    XunJianDataManager.Instance.chooseXunJian.tasksList[i].listUpload.Add(listStr[listStr.Length - 1]);
+                                    break;
+                                }
+                            }
+
+                        }
+                        else
+                        {
+                            Debug.LogError("文件上传失败");
+                        }
+
+
+                    });
+                    
+                }
+                else
+                {
+                    Debug.LogError("文件预上传失败 " + str);
+                }
+
+            }));
+
+          
+
+           
+        }
+
     }
 
     public List<paizhaoData> updateFile()

+ 2 - 2
Assets/FrameWork/ProjectManager/Scripts/Project/XunJian/进入任务/RenWuListItemWindow.cs

@@ -53,7 +53,7 @@ public class RenWuListItemWindow : WindowSingleton<RenWuListItemWindow>
     public void UpdateData(XunJianTasks data)
     {
         this.data2 = data;
-        info.text = (data.index + 1) + "." + data.title;
+        info.text = (data.sort) + "." + data.title;
 
         switch (data.state)
         {
@@ -77,7 +77,7 @@ public class RenWuListItemWindow : WindowSingleton<RenWuListItemWindow>
                 break;
 
         }
-        if (XunJianDataManager.Instance.chooseXunJian.nowIndex == data.index)
+        if (XunJianDataManager.Instance.chooseXunJian.nowIndex == data.sort)
         {
 
             info.color = Color.yellow;

+ 1 - 1
Assets/FrameWork/ProjectManager/Scripts/Project/XunJianLieBiaoItem.cs

@@ -34,7 +34,7 @@ public class XunJianLieBiaoItem : MonoBehaviour
         // »ñȡѲ¼ìÈÎÎñ   
         JsonData jsonData = new JsonData();
 
-        jsonData["projectId"] = int.Parse(data.id);
+        jsonData["projectInspectionId"] = int.Parse(data.id);
         HttpTool.Instance.Post(HttpEdustryAction.projectTasks, jsonData.ToJson(), (string msg) => {
 
             Debug.Log(msg);

+ 7 - 3
Assets/Scripts/HttpEdustryAction.cs

@@ -5,15 +5,19 @@ public class HttpEdustryAction
 
     public static string Login = "/mr-endustry/v1/user/login";
 
-    public static string InspectionList = "/mr-endustry/v1/project/inspectionList";
-
     public static string timestamp = "/mr-endustry/v1/user/timestamp";
 
-    public static string projectTasks =  "/mr-endustry/v1/project/tasks";
+    public static string InspectionList = "/mr-endustry/v1/project/inspection/list";
+
+    public static string projectTasks = "/mr-endustry/v1/project/inspection/tasks";
+
+    public static string tasksReport = "/mr-endustry/v1/project/inspection/tasks/report";
 
     public static string Token = "";
 
     public static string storage_projectCredential = "/mr-endustry/v1/storage/projectCredential";
 
+    public static string storage_projectUploadObject = "/mr-endustry/v1/storage/projectUploadObject";
+
     public static string storage_regionCredential = "/mr-endustry/v1/storage/regionCredential";
 }

+ 79 - 0
Assets/Scripts/RoomFileMinio.cs

@@ -36,6 +36,8 @@ public class RoomFileMinio : MonoSingleton<RoomFileMinio>
 
     bool isminioUpdate;
     bool isUpdate;
+
+    bool isUpload;
     void DoSomeWork()
     {
         while (true)
@@ -50,6 +52,12 @@ public class RoomFileMinio : MonoSingleton<RoomFileMinio>
                     isUpdate = true;
                     Run().Wait();
                 }
+
+                if(NowPfd!=null && !isUpload)
+                {
+                    isUpload = true;
+                    UploadFile().Wait();
+                }
             }
             Thread.Sleep(1000);
         }
@@ -116,6 +124,43 @@ public class RoomFileMinio : MonoSingleton<RoomFileMinio>
 
         await minio.GetObjectAsync(getObjectArgs);
     }
+
+
+    private async Task UploadFile()
+    {
+
+       // await minio.ListBucketsAsync().ConfigureAwait(false);
+        Dictionary<string, string> dicheaders = new Dictionary<string, string>();
+        dicheaders.Add("X-Amz-Meta-Uuid", NowPfd.uuid);
+        Debug.Log(NowPfd.bucket + " " + NowPfd.filePath + " " + NowPfd.objectName + " " + NowPfd.fileSize);
+        PutObjectArgs putObjectArgs = new PutObjectArgs()
+                                        .WithBucket(NowPfd.bucket)
+                                        .WithObject(NowPfd.objectName)
+                                        .WithFileName(NowPfd.filePath)
+                                        .WithContentType("application/octet-stream")
+                                        .WithObjectSize(NowPfd.fileSize)
+                                        .WithHeaders(dicheaders);
+       
+
+        await minio.PutObjectAsync(putObjectArgs).ConfigureAwait(false);
+
+
+        NowPfd.callBack?.Invoke(NowPfd.objectName);
+        NowPfd = null;
+        try
+        {
+           
+        }
+        catch (Exception)
+        {
+
+            Nowfd.callBack?.Invoke(null);
+
+            Nowfd = null;
+        }
+        isUpload = false;
+    }
+
     void initMinIo(Action<bool> callBack)
     {
        
@@ -196,6 +241,23 @@ public class RoomFileMinio : MonoSingleton<RoomFileMinio>
         fdQueue.Enqueue(getFileData);
     }
 
+    Queue<PutFileData> pdQueue = new Queue<PutFileData>();
+
+    public void PutFile(string bucket ,string filePath, string fileName,string objectName, string uuid ,int fileSize,Action<string> callBack)
+    {
+        Debug.Log("DGJ PutFile" + bucket + "   " + filePath);
+
+        PutFileData putFileData = new PutFileData();
+        putFileData.bucket = bucket;
+        putFileData.filePath = filePath;
+        putFileData.fileName = fileName;
+        putFileData.fileSize = fileSize;
+        putFileData.callBack = callBack;
+        putFileData.objectName = objectName;
+        putFileData.uuid = uuid;
+        pdQueue.Enqueue(putFileData);
+    }
+
     public class RoomFileData
     {
         public byte[] bytes;
@@ -208,12 +270,18 @@ public class RoomFileMinio : MonoSingleton<RoomFileMinio>
     }
 
     GetFileData Nowfd;
+    PutFileData NowPfd;
     private void Update()
     {
         if (fdQueue.Count > 0 && Nowfd == null)
         {
             Nowfd = fdQueue.Dequeue();
         }
+
+        if(pdQueue.Count>0 && NowPfd ==null)
+        {
+            NowPfd = pdQueue.Dequeue();
+        }
         if (minio == null)
         {
             if (islogin&&!isminioUpdate)
@@ -250,4 +318,15 @@ public class RoomFileMinio : MonoSingleton<RoomFileMinio>
         public string objectName;
         public Action<RoomFileData> callBack;
     }
+
+    public class PutFileData
+    {
+        public string bucket;
+        public string filePath;
+        public string fileName;
+        public int fileSize;
+        public string objectName;
+        public string uuid;
+        public Action<string> callBack;
+    }
 }