《ASP.NET本质论》大文件上传

ASP.NET实现大文件上传下载功能教程 功能:大文件上传下载,断点续传,文件夹上传下载,加密传输,加密存储,云对象存储要求:免费,开源,技术支持前端:vue2,vue3,react,vue-cli,html,jquery后端:asp.net,vb.net,.net core,.net mvc,.net webform平台:Windows,macOS,Linux,Ubuntu,RedHat,CentOS,中标麒麟,银河麒麟,统信UOS,信创国产化。 阅读详情

        在网站中,上传文件到服务器是一个开发中常见的问题。在ASP.NET 2.0中,还提供了一个FileUpload控件,可以更加简单地完成文件上传的工作。但是,在上传一个比较大的文件时,就会发现上传文件失败了。

-----文件上传的规范
        通过浏览器上传文件的标准是在RFC1867中定义的,RFC1867在HTTP协议的基础上,为input元素增加了type="file"的属性,相应地,在form表单中使用这种input的时候,表单的method必须为post方式,同时表单的enctype也必须设置为multipart/form-data,如下图所示:

<form method="post" action="Default.aspx" id="form1" enctype="multipart/form-data">
    <input type="file" name="FileUpload1" id="FileUpload1" />
    <input type="submit" name="Button1" value="Button" onclick ="uploadProgeress();" id="Button1" />
</form>

对浏览器来说,type属性为file的input元素将会显示为一个文本框和一个浏览文件的按钮。
当选中文件后,提交表单的时候,被选中的文件将随着此次请求发送到服务器。
表单的enctype属性默认为application/x-www-form-urlencoded。在这种方式下,参数之间通过&符号进行分隔,由于在上传文件的时候,文件中也可能包含&符号,因此,不能使用默认的application/x-www-form-urlencoded方式,enctype必须设置为multipart/form-data方式。
在multiparty/form-data方式下,HTTP Request也会有一些变化
首先,在请求头的Content-Type中除了说明使用multiparty/form-data方式以外,增加了boundary的说明,boundary用来说明请求参数之间的分隔边界,boundary中的数字字符区是随机生成的。

以前的content-type头如下:
content-type:application/x-www-form-urlencoded
改变后的content-type头如下:
Content-Type: multipart/form-data;
boundary=---------------------------27870960

其中boundary的实际内容是由浏览器生成的,并不一定与上面相同。
其次,在请求的数据实体部分有了更多的变化。上传文件内容也就是HTTP实体中的参数的一部分。参数之间通过boundary进行分割,HTTP的实体看起来将是下面的样子:
Content-Type: multipart/form-data; boundary=---------------------------27870960128323


Content-Length: 415






-----------------------------27870960128323


Content-Disposition: form-data; name="FileUpload1"; filename="phone.txt"


Content-Type: text/plain






520630   805058548  ·¶Ã·Áá










520616   1192088350 лÕñ¶«






520618   649798842 Ðí¹úîÈ














593174 ÕÅ·É 116314032


-----------------------------27870960128323


Content-Disposition: form-data; name="Button1"






Button


-----------------------------27870960128323--


       通过boundary分隔的是可以可以被分成多个部分,每一部分又可以被分割成两部分,说明部分和数据部分。说明部分和数据部分通过连续的两个回车换行进行分隔。
对于普通参数来说,在说明部分将会包括name参数,说明参数的名字。数据部分将是参数的值。
对于上传文件来说,在说明部分将会增加filename参数和Content-Type参数,在这两个参数之后,通过连续的两个回车换行分隔,一直到下一个分隔符志气啊,即为上传文件的内容。

---------------ASP.NET中的文件上传

        在ASP.NET 1.1中,文件上传过程中将被全部保存在内存,对于大文件来说,会造成内存空间的过度使用,可能会招致恶意攻击。为了解决这个问题,ASP.NET在配置文件中提供了一个参数来控制上传文件的尺寸,这个配置参数在system.web元素的子元素 httpRuntime元素中。maxRequestLength属性用来设置允许的最大请求长度,这个参数的单位是KB(字节),默认情况下,参数的值为4096,也就是最大能上传大约4M大小的文件。如果希望上传10M文件,可以对其进行修改为 10240
         在ASP.NET 2.0之后,上传的文件可以缓存到文件中,以减少对内存的消耗。httpRuntime元素提供了一个新的配置参数requestLengthDiskThreshold属性,用来设置一个上传文件尺寸的门槛,超过这个门槛后,请求的内容将会保存到文件中。这个参数的单位也是KB,默认为80,这个值不应该超过 maxRequestLength参数。
       当请求的内容长度超过门槛的限值之后,请求的内容将会被保存到文件中,这个文件的位置由compilation配置元素的tempDirectory属性指定。
       默认情况下,这个参数的值为空串。临时文件将会被保存在 %FrameworkInstallLocation%\TemporaryASP.NET 文件夹下。在Windows 7 下使用开发服务器的时候,临时文件会保存在 c:Users\用户名\AppData\Local\Temp\Temporary ASP.NET Files\下面
         在ASP.NET 2.0之后,知道ASP.NET 4.0 ,当使用 multipart/form-data方式的请求时,ASP.NET会将请求的Post数据通过System.Web.HttpRawUploadedContent进行管理,这是一个内部类,我们不能直接使用,HttpRequest的私有成员 _rawContent将指向这样一个对象实例。
       虽然有了很大的改进,但是,对于大型文件的上传,我们并不能掌握上传的进度,在AJAX中,就难以显示一个动态的上传进度条,不能提供给用户一个友好的上传进程反馈。我们可以自定义一个文件上传的管理器来完成这个功能。

文件上传的解决方案
       在ASP.NET中,浏览器的请求数据到达ASP.NET网站后,被包装为一个内部的对象HttpWorkerRequest,从客户端发送到服务器的数据在内部通过这个对象来读取,HttpRequest提高哦你过了好怎对请求数据的包装,从ASP.NET 2.0开始,在上传文件过程中,上传的数据通过HttpRawUploadedContent对象来表示,这是HttpRequest的一个内部成员,可以通过HttpRequest还没有读取上传文件的情况下,接管ASP.NET对请求参数的读取过程,自定义针对文件上传的处理,实现上传文件的管理。
      对于其他的Post数据,可以通过反射来构建一个模拟的HttpRawUplaodedContent对象实例,提供给HttpRequest使用,保证在候机的处理中正常获取表单数据,

-------------------通过HttpModule接管请求参数
       在文件上传过程中,ASP.NET架构的底层会肚脐HTTP请求中的信息,在系统内部创建一个类型为HttpRawUploadedContent的对象来表示请求参数,这个对象被HttpRequest对象所使用。
      为了接管HttpRequest对请求参数的处理,我们注册HttpApplication的最早的事件BeginRequest,然后将读取的数据保存到一个自定义的对象中。为了能后在后继的处理过程中继续通过HttpRequest来访问请求数据,我们创建一个伪造的HttpRawUploadedContent提供给HttpRequest对象使用。



ASP.NET 大文件上传解决方案(500M以上) 直接下载下来就能用了。大文件上传解决方案(10G以上),C# 大文件上传解决方案(500M以上),需要在前端,WEB页面中实现大文件,超大文件的上传和下载功能,前端支持WebForm,vue2,vue3,vue-cli,html5,javascript,asp.net 大文件上传解决方案(500M以上),C# 大文件上传解决方案(支持文件夹),C# 大文件上传解决方案(加密传输),C# 大文件上传解决方案(100G以上),C# 大文件上传解决方案(50G以上),C# 阅读详情

相关推荐

ASP.NET实现大文件上传的完整示例

AJAX(Asynchronous JavaScript and XML)是一种在无需重新加载整个页面的情况下,能够更新部分网页的技术。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着用户在浏览网页时,可以不干扰用户当前的操作,直接与服务器进行数据交换。使用 AJAX 的优势在于提升用户交互体验、减少服务器负载以及提高应用的响应速度。AJAX 通过与服务器进行异步通信,实现了页面的局部刷新,避免了传统提交表单的全页面刷新带来的等待和重绘,为用户提供了更为流畅的使用体验。

weixin_32661831的博客 1108

C# 上传大附件

大家都知道VS2008本身提供的控件比较简单易用,但使用却受到很多限制,比如说上,上传时取消操作,多文件上传,上传过程的进度显示问题,要解决这些问题可以利用第三方插件aspnetupload,本人参考了书和网上文章发现都不完整或出现问题,研究了一下成功. 首先右键单击网站根目录,在弹出的快捷菜单中,选择"添加引用"菜单项,弹出"添加引用",切换到"浏览"找到组件的Dll文件"Bestcomy.W

ssrs626的专栏 967

ASP.NET大文件上传组件:进度显示与速率监控

WebbUpload是一个功能强大的文件上传组件,支持多文件上传、断点续传、上传进度显示等多种功能。它支持大文件上传,并且可以很容易地集成到ASP.NET等web应用程序中。相比于传统的文件上传方式,WebbUpload组件的优势在于提供了更为丰富的用户交互体验,以及后端的高性能处理。WebbUpload组件的核心优势包括:用户友好:提供清晰的进度条和状态提示,用户可以直观地了解上传状态。高效传输:支持大文件上传,并且优化了上传过程中的网络效率。安全性。

weixin_30336531的博客 781

ASPNET上传文件总结 (转载)

2010-03-31 11:54:55|  分类: Aspnet源码 |  标签: |字号大中小 订阅   1:最简单上传功能利用微软控件FileUpLoad        string fileName=FileUpload1.FileName;    // FileUpload1是一个对象有很多的方法来说明上传服务器文件的特征,可以通过属性获取文件名

ssrs626的专栏 1995

RML2016.10a (CNN、LSTM、CNN-LSTM、CNN-LSTM-Multi-head-attention, TensorFlow)

RML2016.10a (CNN、LSTM、CNN-LSTM、CNN-LSTM-Multi-head-attention, TensorFlow) 包含所有数据和代码,支持一键运行(jupyter)

qq_40999533的博客 1483

深入解析.Net中SM2与sm-crypto的跨平台加解密实践

本文深入探讨了在.Net平台与前端sm-crypto库之间实现SM2国密算法跨平台加解密的实践方案。针对对接中常见的密钥格式、密文拼接顺序(C1C3C2与C1C2C3)等核心难点,提供了基于BouncyCastle的完整工具类实现、前后端联调示例及问题排查指南,旨在帮助开发者构建安全、兼容的数据加密通道。

weixin_29322855的博客 369

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

首先右键单击网站根目录,在弹出的快捷菜单中,选择"添加引用"菜单项,弹出"添加引用",切换到"浏览"找到组件的Dll文件"Bestcomy.Web.Controls.Upload.dll"(本文件可到官网www.aspnetupload.net下载,本文后面也提供下载),单击"确定",回到VS2008工作界面, Web.config的配置: 在下面加入:     在下面加入:

yf505261213的专栏 4379

LK启动流程深度解析:从硬件初始化到内核加载的MTK平台实践

本文深度解析了MTK平台上LK(Little Kernel)的完整启动流程。从硬件初始化、内存管理(MMU/Cache)开启,到多线程环境建立,再到内核镜像加载与安全校验,详细阐述了LK如何作为Bootloader核心,完成从芯片上电到成功引导Linux内核的关键任务,是MTK平台开发者必须掌握的核心知识。

weixin_28314575的博客 215

如何使用 ASP.NET Core 上传大文件

在本篇文章中,我们修改了上传 API,使用流式传输方法来处理大容量文件。接下来,我们将演示如何通过 API 端使用 MultiparReader。需要提一下的是,如果您的文件API向公众开放,那么您必须更加关心可能发生的安全性和病毒威胁。其余部分,我们只需向我们的文件 API 发送上传请求,并在本地测试环境下比较。流式方法在处理较大文件方面具有优势,这一点并不令我们感到惊讶。其次,我们可能有两种方法来处理文件上传。但对于较大的文件,我们可能无法利用缓冲,并且可能很容易耗尽我们的。[Payload 太大]。

csdn_aspnet的专栏,请点击博客主页右上角三个点中的私信联系 11万+

(04730)半导体器件之基本放大器工作原理(一)

放大器是构成各种电子线路的基本单元电路。所谓“放大”,就是将输入的微弱信号(微弱变化的电压或电流等)去控制直流电源提供的能量,并使输出按照输入的小信号变化规律而变化的过程。所以放大器的本质是能量转换器。本节重点学习基本放大电路的工作原理和基本分析方法及主要性能指标。

黄先生的博客 3006

ESD防护设计宝典(二十三):ESD与EOS失效差异分析

ESD和EOS是电子制造业面临的两大挑战,随着电子产品向更高集成度、更低工作电压和更高工作频率发展,这一问题将更加突出。根据美国军方上世纪八十年代与可靠性分析中心(RAC)共同建立的现场失效返回程序(FFRP)统计数据,产品现场返回中EOS占比高达46%,而ESD仅占6%,另有6%的案例难以区分是EOS还是ESD。

m0_56451176的博客 322

ASP.NET上传超大文件

前端:vue2,vue3,vue-cli,html,jquery后端:asp.net,.net core数据库:SQL Server,MySQL,Oracle,达梦,人大金仓,国产数据库功能:大文件上传下载,断点续传,文件夹上传下载,加密传输,加密存储,云对象存储该说不说,最近这块挻火的,今天早上又有网友加我微信,实际上我的微信号之前就已经在网上公开了,但是很多网友还是说找不到,这个就真没办法了。

alisky119的博客 1145

AUTOSAR进阶图解==>AUTOSAR_EXP_CDDDesignAndIntegrationGuideline

本文档提供了AUTOSAR架构中复杂驱动(CDD)的设计与集成指南。CDD作为非标准化的软件实体,位于复杂驱动层,实现传感器评估、执行器控制、微控制器访问等特殊功能。文档详细阐述了CDD的架构特点、设计建议(包括文档要求、文件结构、接口描述等)以及与其他模块(RTE、库、标准BSW等)的集成方式。特别强调了CDD在多核系统和MCAL层中的实现考量,为开发人员提供了从文档规范到代码实现的全方位指导,确保CDD在保持AUTOSAR兼容性的同时满足特殊功能需求。

一名留德华的,康德的信徒的,专注于汽车电子领域的博客 1887

完美解决ASP.NET无法上传大文件方法

前端:vue2,vue3,vue-cli,html,jquery后端:asp.net,.net core数据库:SQL Server,MySQL,Oracle,达梦,人大金仓,国产数据库功能:大文件上传下载,断点续传,文件夹上传下载,加密传输,加密存储,云对象存储该说不说,最近这块挻火的,今天早上又有网友加我微信,实际上我的微信号之前就已经在网上公开了,但是很多网友还是说找不到,这个就真没办法了。

alisky119的博客 2857

抑制电磁干扰(EMI)的实用电路技术

抑制电磁干扰(EMI)的实用电路技术 qtFK_EMC_EMI 【导读】本系列文章的第 1 部分至第 4 部分详细介绍了开关电源稳压器引起的传导发射和辐射发射,包括噪声产生机制、测量要求、频率范围、适用的测试限值、传播模式和寄生效应。在第 5 部分中,我将基于这一理论基础介绍抑制电磁干扰 (EMI) 的实用电路技术。 一般来说,电路原理图和印刷电路板 (PCB) 对于实现出色的 EMI 性能至关重要。第 3 部分重点强调通过谨慎的元器件选型和 PCB 布局尽量减小“功率回路”寄生电感的重要性。电源转换

学海无涯的专栏 1189

【数据集3】高分辨率统计降尺度日值数据集NEX-GDDP的介绍与下载方法

对NEX-GDDP数据集进行介绍和下载说明

WW、forever的博客 2393

ASP.NET上传超大文件解决方案

前端:vue2,vue3,vue-cli,html,jquery后端:asp.net,.net core数据库:SQL Server,MySQL,Oracle,达梦,人大金仓,国产数据库功能:大文件上传下载,断点续传,文件夹上传下载,加密传输,加密存储,云对象存储该说不说,最近这块挻火的,今天早上又有网友加我微信,实际上我的微信号之前就已经在网上公开了,但是很多网友还是说找不到,这个就真没办法了。

weixin_52041354的博客 1369

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

ASP.NET+大文件上传

前端:vue2,vue3,vue-cli,html,jquery后端:asp.net,.net core数据库:SQL Server,MySQL,Oracle,达梦,人大金仓,国产数据库功能:大文件上传下载,断点续传,文件夹上传下载,加密传输,加密存储,云对象存储今天早上又有网友加我微信,实际上我的微信号之前就已经在网上公开了,但是很多网友还是说找不到,这个就真没办法了。

weixin_52041354的博客 960

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

JS+ASP.NET分片上传大文件

前端:vue2,vue3,vue-cli,html,jquery后端:asp.net,.net core数据库:SQL Server,MySQL,Oracle,达梦,人大金仓,国产数据库功能:大文件上传下载,断点续传,文件夹上传下载,加密传输,加密存储,云对象存储今天早上又有网友加我微信,实际上我的微信号之前就已经在网上公开了,但是很多网友还是说找不到,这个就真没办法了。

weixin_52041354的博客 903

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

ASP.NET大文件分片上传/多线程上传

前端:vue2,vue3,vue-cli,html,jquery后端:asp.net,.net core数据库:SQL Server,MySQL,Oracle,达梦,人大金仓,国产数据库功能:大文件上传下载,断点续传,文件夹上传下载,加密传输,加密存储,云对象存储该说不说,最近这块挻火的,今天早上又有网友加我微信,实际上我的微信号之前就已经在网上公开了,但是很多网友还是说找不到,这个就真没办法了。

alisky119的博客 1739

ASP.NET WebForm如何支持大文件分段上传?

NeatUpload框架,最初由Scott Stanfield于2006年发布,是专为ASP.NET设计的文件上传解决方案,用于处理大文件上传的场景。它提供了一种高效且用户友好的方式来上传文件,尤其是在需要上传大量数据时,如多媒体文件、视频和图像等。NeatUpload框架的核心是通过分块上传和断点续传来减少上传失败的风险,同时优化了内存使用,能够处理大文件上传对服务器的资源压力。分块上传:文件被分成多个小块同时上传,每个块上传完成后即被存储,极大地提升了上传过程的稳定性。

2501_90646763的博客 742

ASP.NET大文件(视频)上传思路

C#.NET支持超大文件HTTP切割上传,C#.NET支持超大文件HTTP切片上传,C#.NET支持超大文件HTTP分割上传,C#.NET支持超大文件HTTP分段上传,C#.NET支持超大文件HTTP分块上传,C#.NET支持超大文件HTTP分片上传,.NET mvc支持超大文件HTTP断点续传,.NET core支持超大文件HTTP断点续传,要求支持断点续传,支持进度信息离线存储,用户可能传一半没有传完,下班了,明天上班后继续上传,电脑晚上到点需要关机,支持加密传输,支持国密加密算法SM4,

alisky119的博客 1116

ASP.NET MVC中WebUploader如何进行大文件的分段上传?

要求:免费,开源,技术支持功能:大文件上传下载,断点续传,文件夹上传下载,加密传输,加密存储,云对象存储前端:vue2,vue3,react,vue-cli,html,jquery后端:asp.net,vb.net,.net core,.net mvc,.net webform平台:Windows,macOS,Linux,Ubuntu,RedHat,CentOS,中标麒麟,银河麒麟,统信UOS,信创国产化。

2501_90694782的博客 996
上一篇: HttpApplication Error事件
下一篇: 几个文件上传的插件
sky1069
博客等级 码龄19年 7粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值