工作用到文件上传的功能,在这个分享下 ~~
Controller:
public class PictureController : Controller{private IHostingEnvironment hostingEnv;public PictureController(IHostingEnvironment env){this.hostingEnv = env;}// GET: /<controller>/public IActionResult Index(){return View();}public IActionResult UploadFiles(){return View();}[HttpPost]public IActionResult UploadFiles(IList<IFormFile> files){long size = 0;foreach (var file in files){var filename = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim(""");//这个hostingEnv.WebRootPath就是要存的地址可以改下filename = hostingEnv.WebRootPath + $@"{filename}";size += file.Length;using (FileStream fs = System.IO.File.Create(filename)){file.CopyTo(fs);fs.Flush();}}ViewBag.Message = $"{files.Count} file(s) /{ size}bytes uploaded successfully!"; return View();}}
view:
<form asp-action="UploadFiles" asp-controller="Picture" method="post" enctype="multipart/form-data"><input type="file" name="files" multiple /><input type="submit" value="Upload Selected Files" /> </form>
文件是上传到wwwroot目录文件下的,这我也看不太懂还在学习,欢迎大家交流~~
----------------------------------------------------------------------------------------------------------
下面是jquery ajax方式上传的
post方式的action的z参数没用 因为只有一个post方式的会404错误所以又加了一个get的action
Controller:
public IActionResult UploadFilesAjax(){return View();}[HttpPost]public IActionResult UploadFilesAjax(string z) {long size = 0;var files = Request.Form.Files;foreach (var file in files){var filename = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim(""");filename = @"C:Userslg.HLDesktop" + $@"{filename}";size += file.Length;using (FileStream fs = System.IO.File.Create(filename)){file.CopyTo(fs);fs.Flush();}}string message = $"{files.Count} file(s) / { size}bytes uploaded successfully!";return Json(message);}
view
<form method="post" enctype="multipart/form-data"><input type="file" id="files"name="files" multiple /><input type="button"id="upload"value="Upload Selected Files" /> </form>
jquery
<script type="text/javascript">$(document).ready(function () {$("#upload").click(function (evt) {var fileUpload = $("#files").get(0);var files = fileUpload.files;var data = new FormData();for (var i = 0; i < files.length ; i++) {data.append(files[i].name, files[i]);}$.ajax({type: "POST",url: "/Picture/UploadFilesAjax",contentType: false,processData: false,data: data,success: function (message) {alert(message);},error: function () {alert("There was error uploading files!");}});});});</script>
欢迎大家交流~ 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。