WPF 用戶端上傳檔案到 ASP.NET MVC 網站

來源:互聯網
上載者:User

本文介紹用戶端向ASP.NET MVC網站上傳檔案的一種方法。上傳的檔案比較小時可以用到。如果檔案比較大,通過FTP協議上傳也許更適合一些。

服務端

既然用戶端要向服務端傳檔案,服務端得能收檔案才行。在ASP.NET MVC網站中,要接收用戶端的檔案上傳很簡單。因為不用給用戶端返回視圖,只要和用戶端通訊即可,所以不用建立View。建立一個controller增加一個action,或者在現有controller中增加一個action用來處理檔案上傳。

 

 1 /// <summary>
 2 /// 上傳
 3 /// </summary>
 4 /// <param name="file">上傳的檔案資訊</param>
 5 /// <returns></returns>
 6 [HttpPost]  // 允許以POST方式提交資料
 7 public int Upload(HttpPostedFileBase file)
 8 {
 9     file.SaveAs(Server.MapPath(String.Format("/UploadFiles/{0}", file.FileName)));  // 儲存檔案
10     return 0;  // 返回資料給用戶端
11 }

 

參數名file也是POST資料時的key名,用戶端在上傳資料時也要帶這個名字。

用戶端

用戶端使用WPF或是WinForm區別不大,主要是擷取要上傳檔案的路徑,然後將該檔案上傳到伺服器。

 

 1 /// <summary>
 2 /// 選擇檔案按鈕
 3 /// </summary>
 4 /// <param name="sender"></param>
 5 /// <param name="e"></param>
 6 private void select_Click(object sender, RoutedEventArgs e)
 7 {
 8     OpenFileDialog dialog = new OpenFileDialog();  // 初始化對話方塊
 9     dialog.Multiselect = false;  // 不允許選中多個檔案
10     dialog.ShowDialog();  // 顯示對話方塊
11     filePath.Content = dialog.FileName;  // 把檔案路徑顯示在介面上
12     upload.IsEnabled = true;  // 允許按上傳按鈕
13 }
14 
15 /// <summary>
16 /// 上傳檔案按鈕
17 /// </summary>
18 /// <param name="sender"></param>
19 /// <param name="e"></param>
20 private void upload_Click(object sender, RoutedEventArgs e)
21 {
22     string url="http://localhost:9741/Sample/Upload";  // 上傳檔案的服務端URL
23     WebClient webClient = new WebClient();  // 初始化WebClient
24     webClient.UploadFile(url, filePath.Content.ToString());  // 上傳檔案
25 }

 

WebClient上傳檔案時預設的key就是file,因此這裡沒有顯式的設定。如果使用方式上傳資料,可能需要提供這個名字,以使伺服器能夠接收到檔案。

在這個例子中,服務端沒有對用戶端或上傳的檔案進行驗證。在正式使用時,應考慮到安全因素。

 


樣本下載

 

 

本文適用於 .NET Framework 4

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.