网上有很多方案,起初用时,因为对asp.net不太了解,觉得FTP实现不错,可是后来发现,如果机器在域控下,就会有问题。
一年过去了,asp.net也熟悉了,知道ajax没事应该用ashx,验证码也用ashx,当然这里要说的WinForm上传也应该是ashx了吧,哈哈,先提供简单思路:
接收文件的asp.net是:Uploader.ashx,相关代码:
- <%@ WebHandler Language="C#" Class="Uploader" %>   
- using System;   
- using System.IO;   
- using System.Web;   
-   
- public class Uploader : IHttpHandler   
- {   
-     public void ProcessRequest(HttpContext hc)   
-     {   
-         foreach (string fileKey in hc.Request.Files)   
-         {   
-             HttpPostedFile file = hc.Request.Files[fileKey];   
-             file.SaveAs(Path.Combine(hc.Server.MapPath("."), file.FileName));   
-         }   
-     }   
-   
-     public bool IsReusable   
-     {   
-         get { return true; }   
-     }   
- }  
 
 发送图片或文件的WinForm.cs 相关代码:  
- System.Net.WebClient myWebClient = new System.Net.WebClient();   
- myWebClient.UploadFile("http://www.yongfa365.com/Uploader.ashx", "POST", "C:\\WINDOWS\\system32\\cmd.exe");  
 
 
OK,完了,这样操作后,再也不用管是不是在域控内了,只要能上网,就能上传。够方便吧。
如果你要批量上传,还有上传后保存在哪个目录等操作可以参考柳永法(yongfa365)‘Blog写的:
接收文件的asp.net是:Uploader.ashx,相关代码:
- <%@ WebHandler Language="C#" Class="Uploader" %>   
- using System;   
- using System.IO;   
- using System.Web;   
-   
- public class Uploader : IHttpHandler   
- {   
-     public void ProcessRequest(HttpContext hc)   
-     {   
-         string NowPath = Path.Combine(hc.Server.MapPath("."), hc.Request["path"]);   
-   
-         if (!Directory.Exists(NowPath))   
-         {   
-             Directory.CreateDirectory(NowPath);   
-         }   
-   
-         foreach (string fileKey in hc.Request.Files)   
-         {   
-             HttpPostedFile file = hc.Request.Files[fileKey];   
-             string FilePath = Path.Combine(NowPath, file.FileName);   
-             if (File.Exists(FilePath))   
-             {   
-                 if (Convert.ToBoolean(hc.Request["overwrite"]))   
-                 {   
-                     File.Delete(FilePath);   
-                 }   
-                 else  
-                 {   
-                     continue;   
-                 }   
-             }   
-             file.SaveAs(FilePath);   
-         }   
-     }   
-   
-     public bool IsReusable   
-     {   
-         get { return true; }   
-     }   
- }  
 
 
 发送图片或文件的WinForm.cs 相关代码:  
- string url = @"http://www.yongfa365.com/Uploader.ashx?Overwrite=true&PATH=Logs\" + DateTime.Now.ToString("yyyy-MM-dd");   
- foreach (string file in Directory.GetFiles(item))   
- {   
-     System.Net.WebClient myWebClient = new System.Net.WebClient();   
-     myWebClient.UploadFile(url, "POST", file);   
- }  
 
 C# WinForm 上传图片,文件到服务器的方法Uploader.ashx,布布扣,bubuko.com
C# WinForm 上传图片,文件到服务器的方法Uploader.ashx
原文:http://www.cnblogs.com/gc2013/p/3868474.html