首先我们需要创建一个form表单如下:
<form method="post" enctype="multipart/form-data" asp-controller="UpLoadFile" asp-action="FileSave">
<div>
<div>
<p>Form表单多个上传文件:</p>
<input type="file" name="files" multiple />
<input type="submit" value="上传" />
</div>
</div>
</form>
private IHostingEnvironment _hostingEnvironment;
???????public HomeController(IHostingEnvironment hostingEnvironment)
???????{
???????????_hostingEnvironment = hostingEnvironment;
???????}
//[RequestSizeLimit(100_000_000)] //最大100m左右
???????//[DisableRequestSizeLimit] ?//或者取消大小的限制
???????public IActionResult Upload()
???????{
???????????var files = Request.Form.Files;
???????????long size = files.Sum(f => f.Length);
???????????string webRootPath = _hostingEnvironment.WebRootPath;
???????????string contentRootPath = _hostingEnvironment.ContentRootPath;
???????????List<string> filenames=new List<string>();
???????????foreach (var formFile in files)
???????????{
???????????????if (formFile.Length > 0)
???????????????{
???????????????????string fileExt = Path.GetExtension(formFile.FileName); //文件扩展名,不含“.”
???????????????????long fileSize = formFile.Length; //获得文件大小,以字节为单位
???????????????????string newFileName = System.Guid.NewGuid().ToString()+ fileExt; //随机生成新的文件名
???????????????????var filePath = webRootPath + "/upload/";
???????????????????if (!Directory.Exists(filePath))
???????????????????{
???????????????????????Directory.CreateDirectory(filePath);
???????????????????}
???????????????????using (var stream = new FileStream(filePath+ newFileName, FileMode.Create))
???????????????????{
???????????????????????formFile.CopyTo(stream);
???????????????????}
???????????????????filenames.Add(newFileName);
???????????????}
???????????}
???????????return Ok(new { filenames, count = files.Count,size });
???????}
???????public IActionResult DownLoad(string file)
???????{
???????????string webRootPath = _hostingEnvironment.WebRootPath;
???????????var addrUrl = webRootPath+"/upload/"+ file;
???????????var stream = System.IO.File.OpenRead(addrUrl);
???????????string fileExt = Path.GetExtension(file);
???????????//获取文件的ContentType
???????????var provider = new FileExtensionContentTypeProvider();
???????????var memi = provider.Mappings[fileExt];
???????????return File(stream, memi, Path.GetFileName(addrUrl));
???????}
???????public IActionResult DeleteFile(string file)
???????{
???????????string webRootPath = _hostingEnvironment.WebRootPath;
???????????var addrUrl = webRootPath + "/upload/" + file;
???????????if (System.IO.File.Exists(addrUrl))
???????????{
???????????????//删除文件
???????????????System.IO.File.Delete(addrUrl); ??????????????
???????????}
???????????return Ok(new { file });
???????}
ASP.NET Core文件上传、下载与删除
原文地址:https://www.cnblogs.com/cb521413/p/9366156.html