.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. tju3243 Blocked Road

    There are N seaside villages on X island, numbered from 1 to N. N roads are built to connect all of ...

  2. 01、mysql安装配置

    1.下载mysql软件安装包 MySQL版本:5.7.17 mysql下载地址:http://rj.baidu.com/soft/detail/12585.html?ald 2.配置mysql数据库与 ...

  3. Linux系统启动过程内核文件丢失解决方法

    一.问题描述 公司近期因机房断电,导致服务器重启后,引导进入不了操作系统.经过检查发现启动文件缺失,导致系统启动失败,网上搜了好多资料,解决都比较零散,现结合实际处理经验和网友的建议整理接方案. 二. ...

  4. SPOJ REPEATS Repeats (后缀数组 + RMQ:子串的最大循环节)题解

    题意: 给定一个串\(s\),\(s\)必有一个最大循环节的连续子串\(ss\),问最大循环次数是多少 思路: 我们可以知道,如果一个长度为\(L\)的子串连续出现了两次及以上,那么必然会存在\(s[ ...

  5. Androidstudio 新GradlePlugin和Gradle Version对应关系

    Project Gradle AS建议升级到4.2. Plugin对应AS的版本,Plugin工具也要和Gradle对应上,否则某些语法不支持,如果是非必要的建议不要轻易升级. Gradle DSL ...

  6. webpack OSS All In One

    webpack OSS All In One 阿里云 OSS 对象存储(Object Storage Service,简称OSS),是阿里云对外提供的海量.安全和高可靠的云存储服务 https://c ...

  7. CSS BFC in depth

    CSS BFC in depth BFC (Block Formatting Context) https://developer.mozilla.org/en-US/docs/Web/Guide/C ...

  8. 安装 Angular Material UI

    文档 调色板 安装 ng add @angular/material ? Choose a prebuilt theme name, or "custom" for a custo ...

  9. CloudQuery v1.2.1 版本发布

    欢迎来到 CloudQuery v1.2.1 版本发布会. 上次 v1.2.0 版本发布收到广大朋友们的热烈反响,大家提出了很多宝贵建议,揪出了不少 Bug.在此,我们表示由衷感谢.问题和建议我们都会 ...

  10. 创建gitHub账户并配置秘钥

    1. 登录注册地址 https://github.com/ 2.点击注册 Sign up 3.输入邮箱 密码 进行注册 4.注册成功后,登录邮箱验证 .然后通过邮箱和密码登录gitHub.设置 set ...