本文主要總結,mvc5中前端上傳文件的幾種方式。html
_hostingEnvironment爲IHostingEnvironment 用於獲取當前程序物理路徑前端
_hostingEnvironment.WebRootPath 獲取路徑 「程序根目錄/wwwroot」ajax
[HttpPost] public ActionResult UploadFile(List<IFormFile> files) { string name = Guid.NewGuid().ToString("n"); string filePath = _hostingEnvironment.WebRootPath+@"/Files/"; foreach (var formFile in files) { string ext = System.IO.Path.GetExtension(formFile.FileName); System.IO.Directory.CreateDirectory(filePath); if (formFile.Length > 0) { string path = filePath + name + ext; using (var stream = new FileStream(path, FileMode.Create)) { formFile.CopyToAsync(stream); } } } return RedirectToAction("List"); }
<form method="post" enctype="multipart/form-data" action="@Url.Action("UploadFile")"> <div class="form-group"> <div class="col-md-10"> <p>選擇文件</p> <input type="file" id="fileImg" name="files" multiple /> </div> </div> <div class="form-group"> <div class="col-md-10"> <input type="submit" value="上 傳" /> </div> </div> </form>
2.使用ajax上傳文件後端
1 <form enctype="multipart/form-data"> 2 <div class="form-group"> 3 <div class="col-md-10"> 4 <p>選擇文件</p> 5 <input type="file" id="file" name="files" multiple /> 6 </div> 7 </div> 8 <div class="form-group"> 9 <div class="col-md-10"> 10 <input type="button" onclick="ajaxupload()" value="ajax上傳" /> 11 <input type="button" onclick="formdataupload()" value="formdata對象上 傳" /> 12 <input type="button" onclick="uploadfile()" value="上 傳" /> 13 </div> 14 </div> 15 </form> 16 17 <script> 18 function ajaxupload() { 19 var form = new FormData(document.querySelector("form")); 20 $.ajax({ 21 url: "@Url.Action("UploadFile")", 22 type: "POST", 23 data: form, 24 processData: false, // 不處理數據 25 contentType: false // 不設置內容類型 26 }); 27 } 28 </script>
3.FormData對象文件上傳mvc
用form表單上傳app
1 <script> 2 function formdataupload() { 3 4 var formdata = new FormData(document.querySelector("form")); 5 var requst = new XMLHttpRequest(); 6 requst.open("post", "@Url.Action("UploadFile")"); 7 requst.send(formdata); 8 } 9 </script>
不用form表單上傳ide
<script> function uploadFile() { var request = new XMLHttpRequest(); var form = new FormData(); form.append("Id", 23); // 數字23被當即轉換成字符串"23" var fileInputElement = $("#fileImg").get(0); // fileInputElement中已經包含了用戶所選擇的文件 form.append("files", fileInputElement.files[0]); // 這裏的files 要與後臺List<IFormFile> files 保持一致
request.open("POST", "@Url.Action("UploadFile")"); request.send(form);
} </script>
參考地址post
https://developer.mozilla.org/zh-CN/docs/Web/API/FormData/Using_FormData_Objectsui
https://blog.csdn.net/saharalili/article/details/79002568url
https://www.cnblogs.com/zhaopei/p/upload.html