1. 程式人生 > >表單上傳文件,asp.net mvc5

表單上傳文件,asp.net mvc5

copy sel RF 表單上傳 string block sharp wid syn

  • 摘要

    本文主要總計,在mvc5中前臺上傳文件的幾種方式。

  • 後臺代碼

  _hostingEnvironment為IHostingEnvironment 用於獲取當前程序物理路徑

  _hostingEnvironment.WebRootPath 獲取路徑 “程序根目錄/wwwroot”

     [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");
        }
  • 前臺代碼
  1. 傳統表單上傳文件
<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" 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>
View Code

3.FormData對象文件上傳

技術分享圖片
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>
FormData對象

參考地址

https://developer.mozilla.org/zh-CN/docs/Web/API/FormData/Using_FormData_Objects

表單上傳文件,asp.net mvc5