winform WebClient类上传文件到远程服务器 409冲突

时间:2021-06-19 04:04:50
 /**/
           /// <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的文件夹,能找到【机组状态列表】中上传的文件。是怎么一回事啊!

#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的文件夹,能找到【机组状态列表】中上传的文件。是怎么一回事啊!