winform WebClient類上傳文件到遠程服務器 409沖突


 /**/
           /// <summary>
           /// WebClient上傳文件至服務器
           /// </summary>
           /// <param name="fileNamePath">文件名,全路徑格式</param>
           /// <param name="uriString">服務器文件夾路徑</param>
           /// <param name="IsAutoRename">是否自動按照時間重命名</param>
           public static void UpLoadFile(string fileNamePath, string uriString, bool IsAutoRename)
           {
               string fileName = fileNamePath.Substring(fileNamePath.LastIndexOf("\\") + 1);
               string NewFileName = fileName;
               if (IsAutoRename)
               {
                   NewFileName = DateTime.Now.ToString("yyMMddhhmmss") + DateTime.Now.Millisecond.ToString() + fileNamePath.Substring(fileNamePath.LastIndexOf("."));
               }
               string fileNameExt = fileName.Substring(fileName.LastIndexOf(".") + 1);
               if (uriString.EndsWith("/") == false) uriString = uriString + "/";

               uriString = uriString + NewFileName;
        
               //創建WebClient實例
               WebClient myWebClient = new WebClient();
               myWebClient.Credentials = CredentialCache.DefaultCredentials;
               // 要上傳的文件
               FileStream fs = new FileStream(fileNamePath, FileMode.Open, FileAccess.Read);
               //FileStream fs = OpenFile();
               BinaryReader r = new BinaryReader(fs);
               byte[] postArray = r.ReadBytes((int)fs.Length);
               Stream postStream = myWebClient.OpenWrite(uriString, "PUT");
               
               try
               {

                   //使用UploadFile方法可以用下面的格式
                   //myWebClient.UploadFile(uriString,"PUT",fileNamePath);


                   if (postStream.CanWrite)
                   {
                       postStream.Write(postArray, 0, postArray.Length);
                       postStream.Close();
                       fs.Dispose();
                      
                   }
                   else
                   {
                       postStream.Close();
                       fs.Dispose();
                       
                   }

               }
               catch (Exception err)
               {
                   postStream.Close();
                   fs.Dispose();
                
                   throw err;
               }
               finally
               {
                   postStream.Close();
                   fs.Dispose();
               }
           }

7 个解决方案

#1


該回復於2011-03-07 12:27:36被版主刪除

#2


這個問題我也在查 我這是有的機器沒有問題 有一台用put請求上傳 就會報409沖突 所以猜測是和那台機器的iis服務器設置有關 找到原因 再告訴你啊 你要是找到了 麻煩通知我一下吧 呵呵

#3


建議樓主先看看,要上傳的服務器的目標文件夾,屬性中是否設置為“寫入”了。

#4


同樣的問題。

#5


有沒有已經解決的,提供一下解決方案。

#6


遠程服務器返回錯誤: (409) 沖突。也被該問題困擾了好幾天,最終發現是由於服務器上不存在上傳文件設定的目錄,而webclient不會自動創建文件夾所導致。手工創建對應的文件夾即可。

#7


請問一下uriString,是怎么得來的。我的是winform程序,客戶端通過服務器IP地址訪問服務器數據。那怎么把文件上傳到服務器上指定的文件夾下面了?我現在的uriString="\\192.168.1.184\\機組狀態列表"; 是想上傳到IP地址為192.168.1.184的服務器上的【機組狀態列表】中;【機組狀態列表】文件為共享文件。可是並沒有傳到192.168.1.184的服務器上。在客戶端電腦資源管理器中【192.168.1.18】4的文件夾,能找到【機組狀態列表】中上傳的文件。是怎么一回事啊!

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com