FileUpload在HTML中是個常用的基礎控制項,在涉及到上傳各種格式的文件時候都會用到;筆者前段時間正好用到它做上傳功能,記錄下來做一些累積, 前端到後臺用的是的Jquery中的Ajax進行數據傳輸,在後臺的邏輯處理中以HttpPostedFileBase的對象調用SaveAs(ServerSa ...
FileUpload在HTML中是個常用的基礎控制項,在涉及到上傳各種格式的文件時候都會用到;筆者前段時間正好用到它做上傳功能,記錄下來做一些累積,
前端到後臺用的是的Jquery中的Ajax進行數據傳輸,在後臺的邏輯處理中以HttpPostedFileBase的對象調用SaveAs(ServerSavePath)方法去存儲到指定路徑。
Microsoft在技術文檔中是這樣描述HttpPostedFileBase的
Serves as the base class for classes that provide access to individual files that have been uploaded by a client. 用於提供客戶端上傳的單個文件訪問的類的基類 接下來看看如何實現: HTML1 <div class="container"> 2 <div class="row"> 3 <input type="file" id="files" multiple name="files" /><button class="btn-default" id="UploadButton">點我上傳</button> 4 </div> 5 </div>View Code
JS
1 $(function () { 2 $('#UploadButton').click(function () { 3 var data= new FormData(); 4 var fileUpload = $("#files").get(0); 5 files = fileUpload.files; 6 if (files.length > 0) { 7 for (var i = 0; i < files.length; i++) { 8 data.append(files[i].name, files[i]); //FormData 是以鍵值對的形式模擬表單,然後以XMLHttpRequest請求出去。表單的enctype的屬性為multipart/form-data 9 } 10 $.ajax({ 11 url: '/IENotes/CommonFile, 12 type: "POST", 13 processData: false, // 不序列化,直接將data進行傳輸。 14 contentType: false, // 告訴jquery不要設置content-Type請求頭,設置成true會對FormData的邊界造成干擾,接收不到數據。 15 data: data, 16 success: function (result) { 17 //location.href("Index"); 18 alert(result); 19 }, 20 error: function (err) { 21 alert(err.statusText); 22 } 23 }); 24 } 25 }); 26 });View Code
後臺
1 public static bool CommonFile(){ 2 var files = Request.Files.AllKeys.Distinct(); //將傳輸過來的files進行去重 3 if (files != null) 4 { 5 foreach (string each in files) 6 { 7 HttpPostedFileBase file = Request.Files[each] as HttpPostedFileBase; //註意,這裡有一個對象類型轉換的過程,需要將傳過來的對象轉換成HttpPostedFileBase對象 8 if (file != null) 9 { 10 var InputFileName = Path.GetFileName(file.FileName); 11 string str4 = AppDomain.CurrentDomain.BaseDirectory; //獲取基目錄,它由程式集衝突解決程式用來探測程式集。 12 var ServerSavePath = Path.Combine(Server.MapPath("~/Uploads/") ); 13 if (!Directory.Exists(ServerSavePath))//檢查路徑是否存在 14 { 15 Directory.CreateDirectory(ServerSavePath); 16 } 17 var SavePath = Path.Combine(ServerSavePath ,InputFileName); 18 file.SaveAs(SavePath); 19 } 20 } 21 return true; 22 } 23 else 24 { 25 return false; 26 } 27 }View Code
感謝您的觀看,您的