简介

文件上传是指将媒体文件(本地文件或网络文件)从客户端上传至服务器存储。ASP.NET Core 支持使用缓冲的模型绑定(针对较小文件)和无缓冲的流式传输(针对较大文件)上传一个或多个文件。缓冲和流式传输是上传文件的两种常见方法。

常见方法

缓冲

整个文件将读入一个 IFormFile。 IFormFile 是用于处理或保存文件的 C# 表示形式。

文件上传使用的磁盘和内存取决于并发文件上传的数量和大小。如果应用尝试缓冲过多上传,站点就会在内存或磁盘空间不足时崩溃。如果文件上传的大小或频率会消耗应用资源,请使用流式传输。

会将大于 64 KB 的所有单个缓冲文件从内存移到磁盘的临时文件。

用于较大请求的 ASPNETCORE_TEMP 临时文件将写入环境变量中命名的位置。如果未 ASPNETCORE_TEMP 定义,文件将写入当前用户的临时文件夹。

[HttpPost, DisableRequestSizeLimit]public ActionResult UploadFile(){try{var file = Request.Form.Files[0];const string folderName = "Upload";var webRootPath = AppDomain.CurrentDomain.BaseDirectory;var newPath = Path.Combine(webRootPath, folderName);if (!Directory.Exists(newPath)){Directory.CreateDirectory(newPath);}if (file.Length > 0){string fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Value;string fullPath = Path.Combine(newPath, fileName);using (var stream = new FileStream(fullPath, FileMode.Create)){file.CopyTo(stream);}Console.WriteLine(fullPath);}return Json("Upload Successful.");}catch (Exception ex){return Json("Upload Failed: " + ex.Message);}}

流式处理

从多部分请求收到文件,然后应用直接处理或保存它。流式传输无法显著提高性能。流式传输可降低上传文件时对内存或磁盘空间的需求。

验证

下面写个方法上传文件验证下

using System;using System.IO;namespace RestSharp.Samples.FileUpload.Client
{class Program{static void Main(){var client = new RestClient("http://localhost:5000");var request = new RestRequest("/api/upload", Method.POST);const string fileName = "ddd_book.jpg";var fileContent = File.ReadAllBytes(fileName);request.AddFileBytes(fileName, fileContent, fileName);var response = client.Execute(request);Console.WriteLine($"Response: {response.StatusCode}");}}
}

在 ASP.NET Core 中上传文件相关推荐

  1. asp.net core中上传文件的解决方案

    上传是经常使用的功能,每遇到一个新项目,频繁写重复代码不是什么好事,推荐一个上传类库,仅通过配置文件,即可拥有上传功能和下载控制,RsCode.Storage是专门解决上传这个问题的.它分两个版本:本 ...

  2. ASP.NET Core 上传文件 图片上传

    在 ASP.NET Core 中上传文件 vs2019 选择文件后,调试停止问题 工具 -> 选项 -> 项目和解决方案 -> Web项目 -> 浏览器窗口关闭时停止调试器(s ...

  3. 如何在ASP.NET Core中上传超大文件

    HTML部分 <%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="index.aspx. ...

  4. 如何在ASP.NET Core中上传文档

    目录 介绍 问题 解决方案 秘密调味料成分1:IFormFile 秘密调味料成分2:IFormFile参数名称 秘密调味料成分#3:FromForm参数属性 秘密调味料成分4:使用表单元素实例化For ...

  5. ASP.NET CORE之上传文件夹

    最近闲余时间在做一个仿百度网盘的项目,其中就有一个上传文件夹的功能.查了下网上好像对这个问题的描述比较少,所以在此记录一下. 1.网上找来找去发现webkitdirectory这个东西,H5的一个新的 ...

  6. c#如何上传大文件到服务器,asp.net(C#)中上传大文件的几中常见应用方法

    asp.net(C#)中上传大文件的几中常见应用方法 更新时间:2008年11月25日 10:05:46   作者: 最近博客需要做一个文件上下载功能,我从网上找了点资料,整理了下希望对大家有帮助! ...

  7. 随便说说:在ASP.NET应用程序中上传文件

    在Web程序中上传文件是很常见的需求.利用HTTP协议上传文件的方式非常有限,最常见的莫过于使用<input type="file" />元素进行上传.这种上传方式会将 ...

  8. html获取附件上传位置,html中上传文件得到文件的绝对路径!

    html中上传文件得到文件的绝对路径! HTML中使用input type="file"上传文件时,代码中只能得到文件的名称,而有些特殊的需要要求我们必须得到上传文件的绝对路径,为 ...

  9. android使用webview上传文件,Android项目中如何在webview页面中上传文件

    Android项目中如何在webview页面中上传文件 发布时间:2020-11-26 15:56:27 来源:亿速云 阅读:68 作者:Leah 本篇文章为大家展示了Android项目中如何在web ...

最新文章

  1. android studio dump java heap_Android Studio 3.0 Memory Profiler使用
  2. Xamarin iOS项目找不到模拟器
  3. 【机器学习】机器学习模型解释神器:Shapash
  4. 判断一组多选框至少有一个被选中_想不想拥有自己的篆刻印章?那就PS一个吧...
  5. C++轮子队-第三周(需求改进原型设计)
  6. 【转】GPS从入门到放弃(一) --- GPS基础原理
  7. Linux Socket C语言网络编程:Select Socket
  8. 关于 Vue.js:那些好的,不怎么样的和糟糕的
  9. 浅谈Flutter UI布局
  10. 记:从百度空间搬家到博客园--写博客要写的舒服
  11. VS的QT插件下载与qt版本下载
  12. 国产分布式ETL调度管理工具 TASKCTL 8.0 核心/代理节点部署
  13. 登陆注册页面html代码(仿知乎)
  14. excel多个表格数据汇总怎么做?
  15. 利用端端Clouduolc的双向同步和单向同步,打造多机热备份的文件下载服务器
  16. 凸优化工具包CVX快速入门
  17. python报错Ran out of input
  18. android椭圆进度,Android 圆形进度条
  19. 查询学生各科前三名的学生成绩
  20. 详细解读阿里云开源PolarDB总体架构和企业级特性

热门文章

  1. JS控制submit表单提交前进行预览和confirm确认提交
  2. 羞辱性加薪_如何避免羞辱新人:高级开发人员指南
  3. Java编程中的[ ]和{ }是表示什么意思?
  4. 技术驱动下的电视行业,HDR成为下一个风口
  5. 实习技术员的基本功(二)
  6. 【dvwa】--SQL注入
  7. 腾讯云大学大咖分享 | 深入浅出话智能语音识别
  8. 夫唯不争,天下莫能与之争
  9. HTTP权威指南-连接部分
  10. C++第5周任务1-4使用默认参数的构造函数,不给定实参时,默认边长为1