MVC AJAX方法 檔案上傳下載
阿新 • • 發佈:2020-07-22
前端頁面
<input type="file" id="f1" /> <input type="button" value="上傳檔案" onclick="ff()" /> <a href="~/Default/download">下載檔案</a> <a href="~/Default/GetFileFromDisk">Click to get file</a> <script> function ff() { var formData = new FormData(); var file = document.getElementById("f1").files[0]; formData.append("fileInfo", file); $.ajax({ url: "/Default/UpLoad/", type: "POST", data: formData, contentType: false,//必須false才會自動加上正確的Content-Type processData: false,//必須false才會避開jQuery對 formdata 的預設處理,XMLHttpRequest會對 formdata 進行正確的處理 success: function (data) { //if (data.Code < 0) alert(data) //else }, error: function (data) { alert("上傳失敗!"); } }); } </script>
控制器方法
namespace WebApplication1.Controllers { public class DefaultController : Controller { APIFileHelp help = new APIFileHelp(); // GET: Default public ActionResult Index() { return View(); } [HttpPost] public string UpLoad() { return help.UpLoad(); } public FilePathResult GetFileFromDisk() { string path = AppDomain.CurrentDomain.BaseDirectory + "Upload/"; string fileName = "新建文字文件.txt"; return File(path + fileName, "text/plain", "test.txt"); } } }
檔案幫助類
namespace WebApplication1.Models { public class APIFileHelp { public string[] ExtentsfileName = new string[] { ".doc",".txt", ".xls", ".png", ".jpg" }; public string UrlPath = "/Upload/"; /// <summary> ///響應物件 ,使用前先賦值 /// </summary> public HttpResponse Response = HttpContext.Current.Response; public HttpRequest Request = HttpContext.Current.Request; public string zhi { get; set; } public string UpLoad() { if (Request.Files.Count > 0) { var file = Request.Files[0]; var extenfilename = Path.GetExtension(file.FileName); //判斷 路徑是否存在 string path = HttpContext.Current.Server.MapPath(UrlPath); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } if (ExtentsfileName.Contains(extenfilename.ToLower())) { string urlfile = UrlPath + DateTime.Now.ToFileTime() + extenfilename; string filepath = HttpContext.Current.Server.MapPath(urlfile); file.SaveAs(filepath); return zhi=urlfile; } else { return zhi = "上傳失敗"; } } else { return zhi = "上傳失敗"; } } } }