表單上傳文件,asp.net mvc5

  • 摘要

    本文主要總結,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");
        }
  • 前端代碼 
  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" 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>
View Code

 

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>
FormData對象

  不用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

相關文章
相關標籤/搜索