.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. Educational Codeforces Round 56 (Rated for Div. 2) D. Beautiful Graph (二分图染色)

    题意:有\(n\)个点,\(m\)条边的无向图,可以给每个点赋点权\({1,2,3}\),使得每个点连的奇偶不同,问有多少种方案,答案对\(998244353\)取模. 题解:要使得每个点所连的奇偶不 ...

  2. VSCode配置Python开发环境

    https://blog.csdn.net/vinkim/article/details/81546333 https://zhuanlan.zhihu.com/p/31417084

  3. python访问Oracle数据库相关操作

    环境: Python版本:3.6.6 win系统:64位 Linux系统:64位 首先安装配置时,版本必须一致!包括:系统版本,python版本,oracle客户端的版本,cx_Oracle的版本! ...

  4. Java15变量竟然没什么区别,八大基本数据类型你知道吗?

    变量是什么? 变量是用来为不同数据类型在内存中分配的空间用来储存该数据. 不同于python这样的弱类型语言,变量声明不需要定义数据类型,就和写数学方程式一般,谁等于谁即可.而Java这个发展了多个版 ...

  5. OpenStack Train版-4.安装placement放置服务

    安装placement放置服务 创建placement数据库 mysql -uroot CREATE DATABASE placement; GRANT ALL PRIVILEGES ON place ...

  6. MyBatis中传参时为什么要用#{}

    MyBatis中传参时为什么要用#{},这个问题和MyBatis如何防止SQL注入类似.不过在解释这个问题之前,先解释一下什么是SQL注入,还有些称作注入攻击这个问题. SQL注入就是SQL 对传入参 ...

  7. 使用MCSManager搭建Minecraft服务器

    目录 一.准备工作 1.MCSManager Windows环境下安装 Linux安装 2.Minecraft服务端 3.Java 二.配置 1.登录面板 2.上传服务端 3.服务端的配置 三.开启服 ...

  8. How to get the real screen size(screen resolution) by using js

    How to get the real screen size(screen resolution) by using js 获取用户屏幕的真实像素分辨率, 屏幕实际尺寸 window.deviceP ...

  9. js console.log all in one

    js console.log all in one this & arguments "use strict"; /** * * @author xgqfrms * @li ...

  10. css ::selection 选择文本改变样式

    .p1::selection{ background: red; color: #fff; }