首先我们需要创建一个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 });
}

转载于:https://www.cnblogs.com/cb521413/p/9366156.html

ASP.NET Core文件上传、下载与删除相关推荐

  1. [转载]ASP.NET Core文件上传与下载(多种上传方式)

    ASP.NET Core文件上传与下载(多种上传方式) 前言 前段时间项目上线,实在太忙,最近终于开始可以研究研究ASP.NET Core了. 打算写个系列,但是还没想好目录,今天先来一篇,后面在整理 ...

  2. ASP.NET中文件上传下载方法集合

    asp.net 2008-08-23 21:10:35 阅读0 评论0   字号:大中小 订阅 ASP.NET中文件上传下载方法集合 文件的上传下载是我们在实际项目开发过程中经常需要用到的技术,这里给 ...

  3. ASP.NET Core文件上传IFormFile于Request.Body的羁绊

    前言 在上篇文章深入探究ASP.NET Core读取Request.Body的正确方式[1]中我们探讨了很多人在日常开发中经常遇到的也是最基础的问题,那就是关于Request.Body的读取方式问题, ...

  4. minio实现文件上传下载和删除功能

    前言 之前用到文件上传功能,在这里做个学习记录.使用minio实现,后面会记录使用fastdfs和阿里云的oss实现文件上传以及他们的比较(oss根据流量收费).minio的中文文档:https:// ...

  5. ASP.NET Core文件上传与下载(多种上传方式)

    前言 前段时间项目上线,实在太忙,最近终于开始可以研究研究ASP.NET Core了. 打算写个系列,但是还没想好目录,今天先来一篇,后面在整理吧. ASP.NET Core 2.0 发展到现在,已经 ...

  6. Asp.net中文件上传下载的简单实现

    1. 文件下载 在asp.net中,如果想点击某aspx的url实现文件下载只要在其Page_Load函数实现目标url的重定向即可.用下列代码即可实现. Response.Redirect(&quo ...

  7. 百度云和阿里云实现文件上传下载和删除功能

    百度云和阿里云类似,本文以百度云为例. 创建百度云对象存储实例 1. 进入百度云官网找到对象存储BOS 2.创建Bucket 3.客户端认证信息 accessKeyId和accessKeySecret ...

  8. ASP.NET中常用的文件上传下载方法

    ASP.NET中常用的文件上传下载方法 文件的上传下载是我们在实际项目开发过程中经常需要用到的技术,这里给出几种常见的方法,本文主要内容包括: 1.如何解决文件上传大小的限制 2.以文件形式保存到服务 ...

  9. Vue + Element+ ASP.NET Core WebAPI 文件上传下载

    以ASP.NET Core WebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API ,包括文件的上传和下载. 准备asp.net后端文件上传的API Uplo ...

最新文章

  1. 关于上传文件的跨域问题
  2. 参加完Python培训后可以找什么工作
  3. php5.3.8添加eaccelerator扩展 加速php代码执行效率
  4. Java Review - 使用Event Bus实现目录变化的监控
  5. 2020国内互联网公司的开源项目及Github地址部分汇总
  6. Python 序列基本操作
  7. 链表查找java_Java 实例 – 链表元素查找
  8. python列表字典元祖_python列表,字典,元组常用方法和集合
  9. day25-python之继承组合
  10. DirEqual for Mac(文件夹快速比较工具)
  11. 11月6日云栖精选夜读:阿里云双11访谈之云安全
  12. linux limbo镜像文件下载,limbo linux镜像下载
  13. Redis入门指南-2
  14. 计算机无法添加本地策略组,win7本地组策略编辑器不能编辑怎么解决
  15. eregi php5.4,PHP 5.4/5.3弃用函数eregi() memory_limit绕过漏洞
  16. 影响中国软件人物之:倪光南院士
  17. Bolt: Anonymous Payment Channels for Decentralized Currencies 学习笔记
  18. mysql 连续天数_mysql计算连续天数,mysql连续登录天数,连续天数统计
  19. 百度想象空间还有多少?
  20. linux认证考试有哪些

热门文章

  1. 三菱st语言编程实例_LD、FBD、IL、ST、SFC、CFC六种编程语言的特点
  2. 链式存储mysql_链栈:栈的链式存储结构
  3. python调用ffmpeg合并_用ffmpeg命令处理mp4剪切与合并
  4. linux更改用户名_破旧安卓手机第二春,在安卓手机上使用Linux_deploy运行Linux
  5. MySQL优化filler值_MySQL 性能优化神器 Explain 使用分析
  6. AMUL的完整形式是什么?
  7. TAFE的完整形式是什么?
  8. java反射对象赋值_Java反射详解
  9. FreeRTOS---堆内存管理(一)
  10. python免杀技术---shellcode的加载与执行