上传

1.修改配置文件web.config,在<system.webServer>下面加入

<security>

<requestFiltering >

<requestLimits maxAllowedContentLength="4096000000" ></requestLimits>

</requestFiltering>

</security>

2.在form中加入enctype ="multipart/form-data"

<form action="" method="" enctype ="multipart/form-data">

3.在action响应处理中加入  HttpPostedFileBase file =Request.Files[0];就可以获取到页面传来的文件流了,然后进行处理。

注意,如果不加入1所示配置项,上传文件不能支持大文件。
下载

public string DownLoad(){

//客户端保存的文件名

string fileName = Request.Params["filename"];

//路径 人为加入了路径前缀,正式版需要修正

string filePath =Server.MapPath(Request.ApplicationPath+"UploadFiles/UserUpload/" + fileName);

//分段流的形式下载文件

System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath);

if (fileInfo.Exists == true)

{

const long ChunkSize = 102400;//100K 每次读取文件,只读取100K,这样可以缓解服务器的压力

byte[] buffer = new byte[ChunkSize];

Response.Clear();

System.IO.FileStream iStream = System.IO.File.OpenRead(filePath);

long dataLengthToRead = iStream.Length;//获取下载的文件总大小

Response.ContentType = "application/octet-stream";

Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName));

while (dataLengthToRead > 0 && Response.IsClientConnected)

{

int lengthRead = iStream.Read(buffer, 0, Convert.ToInt32(ChunkSize));//读取的大小

Response.OutputStream.Write(buffer, 0, lengthRead);

Response.Flush();

dataLengthToRead = dataLengthToRead - lengthRead;

}

Response.Close();

}

return "已下载";

}

分段传输的方式实现下载,缓解服务器压力。

如果不采取分段处理,直接用二进制节传输,会出现报错内存不足的情况。

如下列子:

string fileName = "CodeShark.zip";//客户端保存的文件名

string filePath = Server.MapPath("DownLoad/CodeShark.zip");//路径

//以字符流的形式下载文件

FileStream fs = new FileStream(filePath, FileMode.Open);

byte[] bytes = new byte[(int)fs.Length];

fs.Read(bytes, 0, bytes.Length);

fs.Close();

Response.ContentType = "application/octet-stream";

//通知浏览器下载文件而不是打开

Response.AddHeader("Content-Disposition", "attachment;   filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));

Response.BinaryWrite(bytes);

Response.Flush();

Response.End();

demo下载地址:https://dwz.cn/fgXtRtnu

HTML上传文件支持大文件上传,下载的更多相关文章

  1. 居于H5的多文件、大文件、多线程上传解决方案

    文件上传在web应用中是比较常见的功能,前段时间做了一个多文件.大文件.多线程文件上传的功能,使用效果还不错,总结分享下. 一. 功能性需求与非功能性需求 要求操作便利,一次选择多个文件进行上传: 支 ...

  2. HTTP文件上传服务器-支持超大文件HTTP断点续传的实现办法

    最近由于笔者所在的研发集团产品需要,需要支持高性能的大文件http上传,并且要求支持http断点续传.笔者在以前的博客如何实现支持大文件的高性能HTTP文件上传服务器已经介绍了实现大文件上传的一些基本 ...

  3. 基于bootstrap的上传插件fileinput实现ajax异步上传功能(支持多文件上传预览拖拽)

    首先需要导入一些js和css文件 ? 1 2 3 4 5 6 <link href="__PUBLIC__/CSS/bootstrap.css" rel="exte ...

  4. js上传文件过大导致上传失败原因以及解决办法

    背景:项目需要用到上传视频功能,由于视频有知识产权,要求必须上传到自己的服务器上不允许用第三方视频网站接口上传,于是一开始开始用的是input type=file去上传,小的视频上传没有问题,上传将近 ...

  5. C++中使用内存映射文件处理大文件

    引言 文件操作是应用程序最为基本的功能之一,Win32 API和MFC均提供有支持文件处理的函数和类,常用的有Win32 API的CreateFile().WriteFile().ReadFile() ...

  6. formdata方式上传文件,支持大文件分割上传

    1.upload.html <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/html"> <h ...

  7. 前端上传视频、图片、文件等大文件 组件Plupload使用指南

    demo:https://blog.csdn.net/qq_30100043/article/details/78491993 Plupload上传插件中文帮助文档网址:http://www.phpi ...

  8. 聊一聊jquery文件上传(支持多文件上传)

    谈到文件上传,现在一般都用现成的组件可以使用.PC端的可以使用uploadify.针对微网站H5也有uploadifive.但是这组件并不能满足各种场景的需求,例如:预览 切图 放大缩小,取消之类的. ...

  9. 使用SAS和JavaScript前端上传Azure Bolb大文件

    问题描述: Azure Storage Rest API提供了对于大文件分块上传方法,分别使用Put Block和Put Block List实现相关功能 参考链接: Uploading Large ...

随机推荐

  1. MVc Identity登陆锁定

    2016-08-03 [ASP.NET Identity] OAuth Server 鎖定(Lockout)登入失敗次數太多的帳號 743 6 ASP.NET Identity 檢舉文章 2016-0 ...

  2. [Z]haproxy+keepalived高可用群集

    http://blog.51cto.com/13555423/2067131 Haproxy是目前比较流行的一种集群调度工具Haproxy 与LVS.Nginx的比较LVS性能最好,但是搭建相对复杂N ...

  3. 如何调用别人提供的API?

    1:一般使用聚合数据提供的API: 百度聚合数据,进入: 2:一般是有用户名的直接登录,没有用户名的先进行注册.在搜索框中输入你想查找的API方面的关键字:例如:有关健康的 点开任意一个,你将会看到: ...

  4. c# 线程启动while(true) 死循环,里边的return导致线程退出情况,查错

    写了一个线程 线程下启动了一个循环 while(true) { 里边有个判断 如果为空不操作, 有余这个线程是后加的,老程序里边因为有个return没关注,导致线程退出而不能不听的监控 } 线程启动一 ...

  5. C# 一段通用的写log 日志的好程序

    public void Write(string text) { FileStream fs = new FileStream(Application.StartupPath+"/log.t ...

  6. PAT 1014 福尔摩斯的约会 (20)(代码+思路)

    1014 福尔摩斯的约会 (20)(20 分) 大侦探福尔摩斯接到一张奇怪的字条:"我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfd ...

  7. VS2010工程结构及其瘦身策略

    VS2010工程结构: 我们以在VS2010上利用MFC创建的单文档应用程序HelloWorld的文件结构为例,简述VS2010应用程序工程中文件的组成结构. 1.解决方案相关文件 解决方案相关文件包 ...

  8. Tinyos学习笔记(三)

    读取Telosb内部传感器数据,并在计算机上显示. senseC.nc代码如下: #include "Timer.h" #include "sense.h" # ...

  9. UI设计教程:关于版式设计

    版式设计是视觉传达的重要手段之一,版式设计,即把有限的视觉元素在版面页进行有效的视觉组合,最优化地传达信息的同时,去影响受众,使受众产生视觉上的美感. 版式设计基本流程  在进行版式设计时,设计作品的 ...

  10. Struts问题

    1.struts框架的5大组件:mvc,标签库,校验框架,国际化,tiles; 2.struts的9大核心类以及与mvc对应的关系: C ActionServlet RequestProcessor ...