fly 1 年之前
父节点
当前提交
9e0b5ef4da

+ 30 - 5
Interfaces/FileTransfer/FileHelper.cs

@@ -8,7 +8,7 @@ using WingServerCommon.Config.Parameters;
 namespace WingServerCommon.Interfaces.FileTransfer
 {
     /// <summary>
-    /// 文件帮助��
+    /// 文件帮助
     /// </summary>
     public class FileHelper
     {
@@ -627,7 +627,7 @@ namespace WingServerCommon.Interfaces.FileTransfer
             }
             var storageServer = ConfigurationManager.GetParammeter<StringParameter>("Storage", "StorageServer").Value;
             var serverType = storageServer == "VCS" ? StorageServerEnum.Vinno : StorageServerEnum.Tencent;
-            //表示自建服务��
+            //表示自建服务
             var newFileName = string.Empty;
             if (!isRechristen)
             {
@@ -918,7 +918,7 @@ namespace WingServerCommon.Interfaces.FileTransfer
         }
 
         /// <summary>
-        /// 针对单个value,则只需满足 URLAllowChars 不需要编码即��
+        /// 针对单个value,则只需满足 URLAllowChars 不需要编码即
         /// urlEncode: 转为一个byte -> 转为两个16进制 -> 前面加上 %
         /// </summary>
         /// <param name="value"></param>
@@ -926,7 +926,7 @@ namespace WingServerCommon.Interfaces.FileTransfer
         /// <returns></returns>
         public static string Encode(string value, Encoding encoding)
         {
-            //只有字母和数字[0-9a-zA-Z]、一些特殊符_.!*~',以及某些保留字,才可以不经过编码直接用于URL地址
+            //只有字母和数字[0-9a-zA-Z]、一些特殊符_.!*~',以及某些保留字,才可以不经过编码直接用于URL地址
             string URLAllowChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.~";
             if (String.IsNullOrEmpty(value))
             {
@@ -956,7 +956,7 @@ namespace WingServerCommon.Interfaces.FileTransfer
         }
 
         /// <summary>
-        /// 对象转XML字符��
+        /// 对象转XML字符
         /// </summary>
         public static string XMLSerialize<T>(T t)
         {
@@ -993,5 +993,30 @@ namespace WingServerCommon.Interfaces.FileTransfer
             }
             return result;
         }
+
+        /// <summary>
+        /// 反序列化
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="str"></param>
+        /// <param name="encode"></param>
+        /// <returns></returns>
+        public static T DeserializeXML<T>(string xmlString) where T : class
+        {
+            T result = null;
+            try
+            {
+                XmlSerializer serializer = new XmlSerializer(typeof(T));
+                using (StringReader reader = new StringReader(xmlString))
+                {
+                    result = (T)serializer.Deserialize(reader);
+                }
+            }
+            catch (Exception ex)
+            {
+                Console.WriteLine(ex.Message);
+            }
+            return result;
+        }
     }
 }

+ 4 - 4
Interfaces/FileTransfer/FileTransferRecorder.cs

@@ -87,7 +87,7 @@ namespace WingServerCommon.Interfaces.FileTransfer
         public bool IsUploadComplete { get; set; } = false;
 
         /// <summary>
-        /// 自动分片上传初始化响应列表 
+        /// 自动分片上传初始化响应列表
         /// </summary>
         public InitiateMultipartUploadResult InitiateMultipartUploadResult { get; set; } = new InitiateMultipartUploadResult();
     }
@@ -98,7 +98,7 @@ namespace WingServerCommon.Interfaces.FileTransfer
     public class InitiateMultipartUploadResult
     {
         /// <summary>
-        /// 存储桶 
+        /// 存储桶
         /// </summary>
         public string Bucket {get; set;}
 
@@ -108,7 +108,7 @@ namespace WingServerCommon.Interfaces.FileTransfer
         public string Key {get; set;}
 
         /// <summary>
-        /// uploadId唯一值,分块上传时回传过来 
+        /// uploadId唯一值,分块上传时回传过来
         /// </summary>
         public string UploadId {get; set;}
     }
@@ -151,7 +151,7 @@ namespace WingServerCommon.Interfaces.FileTransfer
         public string Location {get; set;}
 
         /// <summary>
-        /// 存储桶 
+        /// 存储桶
         /// </summary>
         public string Bucket {get; set;}
 

+ 4 - 0
Interfaces/FileTransfer/UploadFile.cs

@@ -206,6 +206,10 @@ namespace WingServerCommon.Interfaces.FileTransfer
             }
             byte[] bytesR = System.Text.Encoding.UTF8.GetBytes(tupleInitResult.Item2);
             var initResult = SignatureHelper.DeserializeXML<InitiateMultipartUploadResult>(bytesR) ?? new InitiateMultipartUploadResult();
+            if (string.IsNullOrWhiteSpace(initResult.UploadId) && !string.IsNullOrWhiteSpace(tupleInitResult.Item2))
+            {
+                initResult = SignatureHelper.DeserializeXML<InitiateMultipartUploadResult>(tupleInitResult.Item2) ?? new InitiateMultipartUploadResult();
+            }
             //分块上传
             var dic = new Dictionary<int, byte[]>();
             var partCount = (int)((fileData.Length / _autoSliceSizeForUpload) + (fileData.Length % _autoSliceSizeForUpload > 0 ? 1 : 0));