C# WinForm 上傳圖片,檔案到伺服器的方法Uploader.ashx

來源:互聯網
上載者:User

標籤:winform   blog   http   os   檔案   io   for   re   

網上有很多方案,起初用時,因為對asp.net不太瞭解,覺得FTP實現不錯,可是後來發現,如果機器在域控下,就會有問題。

一年過去了,asp.net也熟悉了,知道ajax沒事應該用ashx,驗證碼也用ashx,當然這裡要說的WinForm上傳也應該是ashx了吧,哈哈,先提供簡單思路:

接收檔案的asp.net是:Uploader.ashx,相關代碼:

view plaincopy to clipboardprint?
  1. <%@ WebHandler Language="C#" Class="Uploader" %>   
  2. using System;   
  3. using System.IO;   
  4. using System.Web;   
  5.   
  6. public class Uploader : IHttpHandler   
  7. {   
  8.     public void ProcessRequest(HttpContext hc)   
  9.     {   
  10.         foreach (string fileKey in hc.Request.Files)   
  11.         {   
  12.             HttpPostedFile file = hc.Request.Files[fileKey];   
  13.             file.SaveAs(Path.Combine(hc.Server.MapPath("."), file.FileName));   
  14.         }   
  15.     }   
  16.   
  17.     public bool IsReusable   
  18.     {   
  19.         get { return true; }   
  20.     }   
  21. }  

 發送圖片或檔案的WinForm.cs 相關代碼:  

view plaincopy to clipboardprint?
  1. System.Net.WebClient myWebClient = new System.Net.WebClient();   
  2. myWebClient.UploadFile("http://www.yongfa365.com/Uploader.ashx", "POST", "C:\\WINDOWS\\system32\\cmd.exe");  

OK,完了,這樣操作後,再也不用管是不是在域控內了,只要能上網,就能上傳。夠方便吧。

如果你要批量上傳,還有上傳後儲存在哪個目錄等操作可以參考柳永法(yongfa365)‘Blog寫的:

接收檔案的asp.net是:Uploader.ashx,相關代碼:

view plaincopy to clipboardprint?
  1. <%@ WebHandler Language="C#" Class="Uploader" %>   
  2. using System;   
  3. using System.IO;   
  4. using System.Web;   
  5.   
  6. public class Uploader : IHttpHandler   
  7. {   
  8.     public void ProcessRequest(HttpContext hc)   
  9.     {   
  10.         string NowPath = Path.Combine(hc.Server.MapPath("."), hc.Request["path"]);   
  11.   
  12.         if (!Directory.Exists(NowPath))   
  13.         {   
  14.             Directory.CreateDirectory(NowPath);   
  15.         }   
  16.   
  17.         foreach (string fileKey in hc.Request.Files)   
  18.         {   
  19.             HttpPostedFile file = hc.Request.Files[fileKey];   
  20.             string FilePath = Path.Combine(NowPath, file.FileName);   
  21.             if (File.Exists(FilePath))   
  22.             {   
  23.                 if (Convert.ToBoolean(hc.Request["overwrite"]))   
  24.                 {   
  25.                     File.Delete(FilePath);   
  26.                 }   
  27.                 else  
  28.                 {   
  29.                     continue;   
  30.                 }   
  31.             }   
  32.             file.SaveAs(FilePath);   
  33.         }   
  34.     }   
  35.   
  36.     public bool IsReusable   
  37.     {   
  38.         get { return true; }   
  39.     }   
  40. }  

 發送圖片或檔案的WinForm.cs 相關代碼:  

view plaincopy to clipboardprint?
  1. string url = @"http://www.yongfa365.com/Uploader.ashx?Overwrite=true&PATH=Logs\" + DateTime.Now.ToString("yyyy-MM-dd");   
  2. foreach (string file in Directory.GetFiles(item))   
  3. {   
  4.     System.Net.WebClient myWebClient = new System.Net.WebClient();   
  5.     myWebClient.UploadFile(url, "POST", file);   
  6. }  
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.