form表單上傳檔案並返回上傳結果
阿新 • • 發佈:2019-01-07
注意:這是JS的程式碼,且這個script標籤是在body裡面的(放在head裡是沒有反應的)
<script type="text/javascript"> function GetBrowserIsIE() { var obj = ''; if (navigator.userAgent.indexOf('MSIE') > 0) { return true;//IE瀏覽器 } } $("#btnUpload").click(function () { $("#Upload").form('submit', { url: "/TRCFG/fileUploadTest", success: function (data) { var msg = ''; if (GetBrowserIsIE()) { msg = data; if (msg.IsSuccess) { FixtureInspect(); } else { $.messager.alert('Error', msg.Message, 'error'); } } else { msg = JSON.parse(data); if (msg.IsSuccess) { FixtureInspect(); } else { $.messager.alert('Error', msg.Message, 'error'); } } } }) }); </script>
這是前臺程式碼
<form id="Upload" action="/TRCFG/fileUploadTest" enctype="multipart/form-data" method="post">
<input type="file" name="attach" id="attach" /><br />
<input type="button" id="btnUpload" value="Upload" />
</form>
這是Controller的程式碼
[ActionName("fileUploadTest")] [HttpPost] public ActionResult fileUploadTest() { string filename = string.Empty; string toDir = "~/App_Data/"; var FilePath = ""; var files = Request.Files; for (int i = 0; i < files.Count; i++) { var file = files[i]; if (file.FileName.IndexOf("\\") == -1) { filename = DateTime.Now.ToString("yyyyMMddHHmm") + file.FileName;//gu } else { filename = DateTime.Now.ToString("yyyyMMddHHmm") + System.IO.Path.GetFileName(file.FileName);//IE } FilePath = Path.Combine(Server.MapPath(toDir), filename); file.SaveAs(FilePath); } if (System.IO.File.Exists(FilePath)) { return Json(new { IsSuccess = true }); } return Json(new { IsSuccess = false, Message = "FAIL" }); }
我是跑成功了,但我不確定你們能不能,我之前也百度了很多,但自己都失敗了。注意啊,IE和Chrome還是有點區別的,而且有的IE會返回檔案下載的,這個好像是看IE的版本的,你們自己多注意下