.net core 和.net framework上传文件有很多需要注意的地方

.net framework 上传文件用httppostedfilebase

.net core 上传文件用 IFormFile

一、首先需要配置在startup 中的Configure方法内新增以下代码

app.UseStaticFiles();

而配置Apk下载需要加以下代码,与上面的app.UseStaticFiles()并不冲突

 app.UseStaticFiles(new StaticFileOptions
{
//FileProvider = new PhysicalFileProvider(Directory.GetCurrentDirectory()),
//设置不限制content-type 该设置可以下载所有类型的文件,但是不建议这么设置,因为不安全
//下面设置可以下载apk和nupkg类型的文件
ContentTypeProvider = new FileExtensionContentTypeProvider(new Dictionary<string, string>
{
{ ".apk", "application/vnd.android.package-archive" }
})
});

如下图:

如果被限制上传大小,需要在startup 中的ConfigureServices新增如下代码:

   services.Configure<FormOptions>(x =>
{
x.MultipartBodyLengthLimit = int.MaxValue;
});

如下图:

二、上传文件到wwwroot/虚拟目录中,需要在项目内新增一个文件夹,更名为wwwroot

如下图:

三、控制器(UploadController)需要注入IWebHostEnvironment

        private readonly IWebHostEnvironment _env;
public UploadController(IWebHostEnvironment env)
{
_env = env;
}

如下图:

四、需要在控制器方法配置 [RequestSizeLimit(int.MaxValue)] 上传文件大小限制改为最大值,附上传文件代码

/// <summary>
/// 上传包文件
/// </summary>
/// <param name="files">文件</param>
/// <param name="VersionCode">版本代码</param>
/// <param name="Creator">上传人</param>
/// <returns></returns>
[HttpPost("UploadPackage")]
[RequestSizeLimit(int.MaxValue)]
public async Task<ApiResult> UploadPackage([FromForm(Name = "files")] List<IFormFile> files,
[FromForm] string VersionCode, [FromForm] string Creator)
{
string FileTime = DateTime.Now.ToString("yyyyMMdd");
string uploadPath = Path.Combine(_env.WebRootPath, "CommonUpLoadFile", FileTime);//上传路径;虚拟目录wwwroot\CommonUpLoadFile\..
try
{
string fileName = string.Empty;
string QueryPath = string.Empty;
foreach (var formFile in files)
{
if (formFile.Length > 0)
{
if (!Directory.Exists(uploadPath)) //不存在则创建路径
{
Directory.CreateDirectory(uploadPath);
}
fileName = formFile.FileName;
string savePath = Path.Combine(uploadPath, fileName);//保存文件
QueryPath = $"{CU_server.UploadQuery_String}CommonUpLoadFile/{FileTime}/{fileName}";//查询的文件名;CU_server.UploadQuery_String指向虚拟目录wwwroot
using (var stream = System.IO.File.Create(savePath))
{
await formFile.CopyToAsync(stream);
}
}
}
return OkResult("上传成功");
}
catch (Exception ex)
{
return MessageResult(404, $"上传出现错误,错误原因:{ex.Message}");
}
}

如图:



注:附上官方 .NET Core 上传文件文档

PostMan测试截图

欢迎各位大神指点,有用就点个赞吧!

.net Core 上传文件详解的更多相关文章

  1. PHP上传文件详解 错误提示

    首先在php.ini里配置上载文件.有以下几个重要的配置单: 选项 默认值 说明 post_max_size 8M 控制以后的POST请求的最大规模.必须大于upload_max_filesize选项 ...

  2. PHP上传文件详解

    1.上传文件使用的提交方式和请求Content-type POST提交方式,原始的form表单提交请加上enctype="multipart/form-data" 2.MAX_FI ...

  3. Struts2+Uploadify文件上传使用详解

    Uploadify是JQuery的一个上传插件,实现的效果非常不错,带进度显示.不过官方提供的实例是php版本的,本文将详细介绍Uploadify在java中的使用,您也可以点击下面的链接进行演示或下 ...

  4. 七牛云存储Python SDK使用教程 - 上传策略详解

    文 七牛云存储Python SDK使用教程 - 上传策略详解 七牛云存储 python-sdk 七牛云存储教程 jemygraw 2015年01月04日发布 推荐 1 推荐 收藏 2 收藏,2.7k  ...

  5. .NET CORE上传文件到码云仓库【搭建自己的图床】

    .NET CORE上传文件到码云仓库[搭建自己的图床] 先建一个公共仓库(随意提交一个README文件或者.gitignore文件保证master分支的存在),然后到gitee的个人设置页面找到[私人 ...

  6. Web应用安全之文件上传漏洞详解

    什么是文件上传漏洞 文件上传漏洞是在用户上传了一个可执行的脚本文件,本通过此脚本文件获得了执行服务器端命令的功能,这种攻击方式是最为直接,最为有效的,有时候,几乎没有什么门槛,也就是任何人都可以进行这 ...

  7. ASP.Net大文件上传组件详解

    首先右键单击网站根目录,在弹出的快捷菜单中,选择"添加引用"菜单项,弹出"添加引用",切换到"浏览"找到组件的Dll文件"Best ...

  8. php文件上传原理详解(含源码)

    1.文件上传原理 将客户端的文件上传到服务器,再将服务器的临时文件上传到指定目录 2.客户端配置 提交表单 表单的发送方式为post 添加enctype="multipart/form-da ...

  9. jquery组件WebUploader文件上传用法详解

    这篇文章主要为大家详细介绍了jquery组件WebUploader文件上传用法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 WebUploader是由Baidu WebFE(FEX)团队开发的一 ...

随机推荐

  1. Codeforces Round #305 (Div. 1) B. Mike and Feet

    Mike is the president of country What-The-Fatherland. There are n bears living in this country besid ...

  2. 牛客编程巅峰赛S1第5场 - 青铜&白银 C.排队 (优先队列,归并排序)

    题意:有\(m\)个窗口,\(n\)个人排队,每个人都有各自的办理时间,只有办理完成窗口才能空出来,后面的人开始办理,求有多少人比后面的人开始办理的早但完成的晚. 题解:我们可以用优先队列来模拟办理, ...

  3. CF1459-C. Row GCD

    CF1459-C. Row GCD 题意: 给出两个整数序列\(a.b\),他们的长度分别为\(n,m\).对于数组\(b\)中的每个数字,让你求出\(gcd(a_1+b_j,a_2+b_j,..., ...

  4. Excel导出时设置单元格的格式为文本

    问题: 用excel导出数据时,如何设置单元格格式的数字分类为"文本",默认是"常规"? 比如:导出编码0235A089,在Excel查看默认显示的是没有前面的 ...

  5. 并发编程之java内存模型(Java Memory Model ,JMM)

    一.图例 0.两个概念 Heap(堆):运行时的数据区,由垃圾回收负责,运行时分配内存(所以慢),对象存放在堆上 如果两个线程,同时调用同一个变量,怎两个线程都拥有,该对象的私有拷贝 (可以看一下,T ...

  6. c# 类(2)

    构造函数 和 析构函数 Constructors and destructors 构造函数是一个特殊的函数,当实例化一个类的时候自动调用这个函数,无返回值(不用定义返回类型)普通函数的定义 publi ...

  7. vue & this.$copyText

    vue & this.$copyText click copy https://www.npmjs.com/package/vue-clipboard2 <p>{{message2 ...

  8. 使用 js 实现十大排序算法: 希尔排序

    使用 js 实现十大排序算法: 希尔排序 希尔排序 refs xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!

  9. Chrome V8 系统架构

    Chrome V8 系统架构 Chromium 多进程多线程架构 design-documents https://www.chromium.org/developers/design-documen ...

  10. nodejs 显示进度条插件

    ora 显示loading.. progress 进度条 progress var ProgressBar = require("progress"); var bar = new ...