首页 > 其他分享 >net6 WebAPI大文件上传

net6 WebAPI大文件上传

时间:2024-07-04 18:41:21浏览次数:21  
标签:WebAPI 文件 缓存 文件夹 内存 net6 5G 上传

最近由于客户需要上传大文件,所以研究了一下文件上传的问题

net6 上传文件分为两种情况:buffering和streaming(缓存和流)

Buffering:

我们平时采用的通过IFormFile上传文件的方式就是Buffering,此方式会将文件全部缓存起来。这种方式简单,但对内存和硬盘空间造成负担。关于缓存,这里有个误区,我们用stream 操作文件的时候,会将文件全部load到内存中,但文件缓存并不是全部缓存到内存中,因为我们的电脑默认开启了虚拟缓存,所以,当我们的内存空间不足的时候,会将文件缓存到当前user的临时文件夹下,举个例子:当我们的内存只有1G空间情况下,上传一个5G的文件并不会导致系统崩溃,因为文件会被存储到临时文件夹下,此时观察临时文件夹的硬盘使用量迅速增大到5G,当文件全部上传完成,临时文件会被清理。所以,当高并发的情况下,磁盘空间会很快耗尽。

Streaming

Streaming上传的时候,不会在临时文件夹创建临时文件,而是直接将文件以流的方式直接存储到指定文件路径下,举个例子:当我们的内存只有1G空间情况下,上传一个5G的文件,此时观察临时文件夹的硬盘使用量只有很小的增长,文件会在一开始就被创建,不断接收传过来的数据,此时有个现象需要注意,当上传意外终止时,文件会保留下来,但内容不完整,需要自己手动处理一下。

当然,在处理大文件时,还可以考虑采用分片上传的模式,此问题正在研究中。

以上内容参考于:

https://learn.microsoft.com/zh-cn/aspnet/core/mvc/models/file-uploads?view=aspnetcore-6.0

标签:WebAPI,文件,缓存,文件夹,内存,net6,5G,上传
From: https://www.cnblogs.com/xinyublog/p/18284455

相关文章

  • 使用 Putty 的 PSFTP 上传文件到服务器(手工、bat批处理)
    一、手工方式上传1.建立连接:psftp.exe-iaws.ppk(自己的秘钥)2.使用用户名登录地址:[email protected]显示Remoteworkingdirectoryis/home/xxx此时已经建立了连接。3.上传文件putfilename默认传到/home/xxx目录下4.下载文件get/home/xxx/filename......
  • 【攻防世界】wzsc_文件上传
    wzsc_文件上传题目来源攻防世界NO.GFSJ0997题目描述经典上传页面用御剑扫出upload文件夹/upload路径下是上传的文件题解新建几个空文件,发现后缀为txt的文件可以上传,且在/upload下能看到php文件上传后在/upload下无法看到,怀疑是上传后立马被删除。先进行测试是否......
  • selenium16_文件上传
    inupt标签可以直接通过send_keys上传文件非input标签,AutoIt上传1.安装AutoIt2.AutoIt菜单介绍SciTEScriptEditor编辑器,用于编写AutoIt脚本AutoItWindowsInfo元素定位器,用于识别Windows控件信息RunScript执行AutoIt脚本CompileScriptto.exe将AutoIt生成可执行文件......
  • 【Python&网络通信】基于Bypy调用百度网盘api实现自动上传和下载网盘文件
    ​    网盘对于大家的生活工作可以说是息息相关,但是如果每天都重复去上传下载文件就会很浪费时间,所以有没有什么办法可以解放双手?那就是网盘接口,本文通过Bypy库实现百度网盘的自动上传和下载文件。原创作者:RS迷途小书童博客地址:https://blog.csdn.net/m0_56729804?t......
  • python编写使用xmlrpc上传wordpress网站文章的程序
    1、安装库        pipinstallpython-wordpress-xmlrpc,tkinter,xmlrpc,json2、发布文章url="http://域名/xmlrpc.php"username=用户名password=密码title=标题content=内容tags=标签categories=分类client=C......
  • CentOS Stream 8 发布.net 8 webapi
    参考资料https://learn.microsoft.com/zh-cn/dotnet/core/install/linux-rhel#where-is-centos-linux 微软好像不持支.net7所以把demo换成.net8sudodnfinstalldotnet-sdk-8.0 然后就开始报错,大致意思就是无法解析,找不到地址资源进入yum的repos目录cd/etc/yum.rep......
  • C#.NET FRAMEWORK .NET CORE .NET6 .NET8 判断是否Emoji
    C#.NETFRAMEWORK.NETCORE.NET6.NET8判断是否Emoji 工具类:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceConsoleThreadTimer{publicclassEmojiUtil{///<s......
  • 图片和表单数据同时上传
     //请求 exportfunctionaddcountorderitem(data){returnrequest({url:'/countoder/oderitem/add',method:'post',data:data,headers:{'Content-Type':'multipart/form-data'}/......
  • JavaScript-WebAPI
    文章目录JS组成什么是webApis和APIDOM简介document对象获取DOM对象利用css选择器来获取DOM元素选择指定css选择器的所有元素其他获取DOM元素方法(了解)操作元素内容对象.innerText对象.innerHTML操作元素属性操作元素常用属性操作元素样式属性通过style属性操作......
  • WebAPI项目框架仓储模式+导入SqlSuag
    仓储(Respository)是对数据库访问的一个封装解决方案新建Respository文件夹,新建类库Web.Core.IRepository,Web.Core.Repository解决方案新建Services文件夹,新建类库Web.Core.IServices,Web.Core.Services在类库Web.Core.Model下面新建Entity文件夹SqlSugar是国人开发者开发的一......