ASP.NET大文件断点上传

HTML部分

<%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="index.aspx.cs"Inherits="up6.index" %>

<!DOCTYPEhtmlPUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml">

<head>

<metahttp-equiv="Content-Type"content="text/html; charset=gb2312"/>

<title>up6-多标签演示页面</title>

<linkhref="js/up6.css"type="text/css"rel="Stylesheet"charset="gb2312"/>

<scripttype="text/javascript"src="js/jquery-1.4.min.js"></script>

<scripttype="text/javascript"src="js/json2.min.js"charset="utf-8"></script>

<scripttype="text/javascript"src="js/up6.config.js"charset="utf-8"></script>

<scripttype="text/javascript"src="js/up6.app.js"charset="utf-8"></script>

<scripttype="text/javascript"src="js/up6.edge.js"charset="utf-8"></script>

<scripttype="text/javascript"src="js/up6.file.js"charset="utf-8"></script>

<scripttype="text/javascript"src="js/up6.folder.js"charset="utf-8"></script>

<scripttype="text/javascript"src="js/up6.js"charset="utf-8"></script>

<scriptlanguage="javascript"type="text/javascript">

var cbMgr = new HttpUploaderMgr();

cbMgr.event.md5Complete = function (obj, md5) { /*alert(md5);*/ };

cbMgr.event.fileComplete = function (obj) { /*alert(obj.fileSvr.pathSvr);*/ };

cbMgr.event.queueComplete = function () { $(document.body).append("队列完成<br/>"); }

cbMgr.event.addFdError = function (jv) { alert("本地路径不存在:" + jv.path); };

cbMgr.event.scanComplete = function (obj) { /*alert(obj.folderSvr.pathLoc);*/ };

cbMgr.Config["Cookie"] = ‘ASP.NET_SessionId=<%=Session.SessionID%>‘;

cbMgr.Config.Fields["uid"] = 0;

$(function ()

{

cbMgr.load_to("FilePanel");

//上传指定文件

$("#btnUpF").click(function () {

var path = $("#filePath").val();

cbMgr.app.addFile({ pathLoc: path });

});

//上传指定目录

$("#btnUpFd").click(function () {

var path = $("#folderPath").val();

cbMgr.app.addFolder({ pathLoc: path });

});

});

</script>

</head>

<body>

<p>up6多标签上传演示页面</p>

<p><ahref="db/clear.aspx"target="_blank">清空数据库</a></p>

<p><ahref="filemgr/index.aspx"target="_blank">文件管理器演示</a></p>

<p><ahref="index2.aspx"target="_blank">单面板演示</a></p>

<p><ahref="down2/index.htm"target="_blank">打开下载页面</a></p>

<p><ahref="index-single.htm"target="_blank">单文件上传演示</a></p>

<p>

文件路径:<inputid="filePath"type="text"size="50"value="D:\\360safe-inst.exe"/>&nbsp;

<inputid="btnUpF"type="button"value="上传本地文件"/>

</p>

<p>

目录路径:<inputid="folderPath"type="text"size="50"value="C:\\Users\\Administrator\\Desktop\\test"/>&nbsp;

<inputid="btnUpFd"type="button"value="上传本地目录"/>

</p>

<divid="FilePanel"></div>

<divid="msg"></div>

</body>

</html>

代码部分

using  System;

using  System.Collections;

using  System.ComponentModel;

using  System.Data;

using  System.Drawing;

using  System.Web;

using  System.Web.SessionState;

using  System.Web.UI;

using  System.Web.UI.WebControls;

using  System.Web.UI.HtmlControls;

namespace  WebPortal

{

///  <summary>

///  UpLoad  的摘要说明。

///  实现多文件上传

///  </summary>

public  class  Upload  :  System.Web.UI.Page

{

protected  System.Web.UI.WebControls.Button  UploadButton;

protected  System.Web.UI.WebControls.Label  strStatus;

private  void  Page_Load(object  sender,  System.EventArgs  e)

{

///  在此处放置用户代码以初始化页面

if  (this.IsPostBack)  this.SaveImages();

}

private  Boolean  SaveImages()

{

///‘遍历File表单元素

HttpFileCollection  files    =  HttpContext.Current.Request.Files;

///  ‘状态信息

System.Text.StringBuilder  strMsg  =  new  System.Text.StringBuilder();

strMsg.Append("上传的文件分别是:<hr  color=red>");

try

{

for(int  iFile  =  0;  iFile  <  files.Count;  iFile++)

{

///‘检查文件扩展名字

HttpPostedFile  postedFile  =  files[iFile];

string  fileName,  fileExtension;

fileName  =  System.IO.Path.GetFileName(postedFile.FileName);

if  (fileName  !=  "")

{

fileExtension  =  System.IO.Path.GetExtension(fileName);

strMsg.Append("上传的文件类型:"  +  postedFile.ContentType.ToString()  +  "<br>");

strMsg.Append("客户端文件地址:"  +  postedFile.FileName  + "<br>");

strMsg.Append("上传文件的文件名:"  +  fileName  +  "<br>");

strMsg.Append("上传文件的扩展名:"  +  fileExtension  +  "<br><hr>");

///‘可根据扩展名字的不同保存到不同的文件夹

///注意:可能要修改你的文件夹的匿名写入权限。

postedFile.SaveAs(System.Web.HttpContext.Current.Request.MapPath("images/")  +  fileName);

}

}

strStatus.Text  =  strMsg.ToString();

return  true;

}

catch(System.Exception  Ex)

{

strStatus.Text  =  Ex.Message;

return  false;

}

}

#region  Web  窗体设计器生成的代码

override  protected  void  OnInit(EventArgs  e)

{

//

//  CODEGEN:  该调用是  ASP.NET  Web  窗体设计器所必需的。

//

InitializeComponent();

base.OnInit(e);

}

///  <summary>

///  设计器支持所需的方法  -  不要使用代码编辑器修改

///  此方法的内容。

///  </summary>

private  void  InitializeComponent()

{

this.ID  =  "Upload";

this.Load  +=  new  System.EventHandler(this.Page_Load);

}

#endregion

}

}

选择文件夹

js部分

后端代码逻辑大部分是相同的,目前能够支持MySQL,Oracle,SQL。在使用前需要配置一下数据库,可以参考我写的这篇文章:http://blog.ncmem.com/wordpress/2019/08/07/java超大文件上传与下载/

原文地址:https://www.cnblogs.com/songsu/p/11791426.html

时间: 2024-08-29 10:56:57

ASP.NET大文件断点上传的相关文章

Android应用开发之使用Socket进行大文件断点上传续传

http://www.linuxidc.com/Linux/2012-03/55567.htm http://blog.csdn.net/shimiso/article/details/8529633/ 在Android中上传文件可以采用HTTP方式,也可以采用Socket方式,但是HTTP方式不能上传大文件,这里介绍一种通过Socket方式来进行断点续传的方式,服务端会记录下文件的上传进度,当某一次上传过程意外终止后,下一次可以继续上传,这里用到的其实还是J2SE里的知识. 这个上传程序的原理

Android中Socket大文件断点上传

什么是Socket? 所谓Socket通常也称作“套接字”,用于描述IP地址和端口,是一个通信连的句柄,应用程序通常通过“套接字”向网络发送请求或者应答网络请求,它就是网络通信过程中端点的抽象表示.它主要包括以下两个协议: TCP (Transmission Control Protocol 传输控制协议):传输控制协议,提供的是面向连接.可靠的字节流服务.当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据.TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功

Android 文件断点上传器[多用户并发访问]

通过TCP/IP(SOCKET)协议实现文件断点上传(实现多用户并发访问). HTTP不支持文件断点续传,所以无法使用HTTP协议. 场景: 1. 网络不稳定,导致上传失败,下次不是从头开始,而是从断点开始上传: 2. 上传大文件,无法http上传,因为web服务器考虑到安全因素,会限制文件大小,一般10+m. 此文件断点上传器使用自定义协议. 服务器为上传的文件在服务器端生成唯一的sourceid关联上传文件,当客户端上传文件时,首次的sourceid为空,服务端先判断sourceid是否为空

iOS大文件分片上传和断点续传

总结一下大文件分片上传和断点续传的问题.因为文件过大(比如1G以上),必须要考虑上传过程网络中断的情况.http的网络请求中本身就已经具备了分片上传功能,当传输的文件比较大时,http协议自动会将文件切片(分块),但这不是我们现在说的重点,我们要做的事是保证在网络中断后1G的文件已上传的那部分在下次网络连接时不必再重传.所以我们本地在上传的时候,要将大文件进行分片,比如分成1024*1024B,即将大文件分成1M的片进行上传,服务器在接收后,再将这些片合并成原始文件,这就是分片的基本原理.断点续

网页 大文件分片上传处理

总结一下大文件分片上传和断点续传的问题.因为文件过大(比如1G以上),必须要考虑上传过程网络中断的情况.http的网络请求中本身就已经具备了分片上传功能,当传输的文件比较大时,http协议自动会将文件切片(分块),但这不是我们现在说的重点,我们要做的事是保证在网络中断后1G的文件已上传的那部分在下次网络连接时不必再重传.所以我们本地在上传的时候,要将大文件进行分片,比如分成1024*1024B,即将大文件分成1M的片进行上传,服务器在接收后,再将这些片合并成原始文件,这就是分片的基本原理.断点续

android下大文件分割上传

由于android自身的原因,对大文件(如影视频文件)的操作很容易造成OOM,即:Dalvik堆内存溢出,利用文件分割将大文件分割为小文件可以解决问题. 文件分割后分多次请求服务. 1 //文件分割上传 2 public void cutFileUpload(String fileType,String filePath) 3 { 4 try 5 { 6 FileAccessI fileAccessI = new FileAccessI(filePath, 0); 7 Long nStartPo

PHP实现大文件的上传设置

打开php.ini,首先找到 ;;;;;;;;;;;;;;;; ; File Uploads ; ;;;;;;;;;;;;;;;; 区域,有影响文件上传的以下几个参数: file_uploads = on ;是否允许通过HTTP上传文件的开关.默认为ON即是开 upload_tmp_dir ;文件上传至服务器上存储临时文件的地方,如果没指 打开php.ini,首先找到;;;;;;;;;;;;;;;;; File Uploads ;;;;;;;;;;;;;;;;;区域,有影响文件上传的以下几个参数

Ajax实现大文件切割上传

Ajax大文件切割上传 2015-02-07 前面我们已经实现了Ajax的文件上传,不过会受限于服务器的允许的大小, 如果服务器并非自己的,我们就要使用Ajax大文件切割来实现上传. 首先解决Ajax跨域上传问题: 在HTML5中,ajax的跨域有了新的规则-----能否跨域取决于对应的应答. 对方服务器如果愿意接受远程过来的ajax,或某几个域名过来的ajax请求,可以在头信息header中,加入Access-Control-Allow-Origin * 在PHP中加入此信息,就可以实现跨域请

Ajax大文件切割上传

1问:在不更改php.ini中post_max_size的情况下怎么实现大文件的上? 答把大文件切割成许多小块,分块上传,传完后,重新合并成大文件即可. 2问:怎么切割? 答:用html5中的file API,这个API继承自Blob对象,Blob中有slice方法,可以截取二进制对象的一部分,实现切割大文件的效果. 3问:具体思路呢? 答:截取10M上传,判断是否截取完毕 while 还有数据{ 截取, Ajax上传 } 1 <script type="text/javascript&q