Ⅰ JavaScript 大文件分片上传处理如何实现
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>upload</title> <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script> </head> <body> <input type="file" name="file" id="file"> <button id="upload" onClick="upload()">upload</button> <script type="text/javascript"> var bytesPerPiece = 1024 * 1024; // 每个文件切片大小定为1MB . var totalPieces; //发送请求 function upload() { var blob = document.getElementById("file").files[0]; var start = 0; var end; var index = 0; var filesize = blob.size; var filename = blob.name; //计算文件切片总数 totalPieces = Math.ceil(filesize / bytesPerPiece); while(start < filesize) { end = start + bytesPerPiece; if(end > filesize) { end = filesize; } var chunk = blob.slice(start,end);//切割文件 var sliceIndex= blob.name + index; var formData = new FormData(); formData.append("file", chunk, filename); $.ajax({ url: 'http://localhost:9999/test.php', type: 'POST', cache: false, data: formData, processData: false, contentType: false, }).done(function(res){ }).fail(function(res) { }); start = end; index++; } } </script> </body> </html>
Ⅱ java springmvc 大文件分片上传处理
*/@ApiModel("大文件分片入参实体")public class MultipartFileParam {
@ApiModelProperty("文件传输任务ID") private String taskId;
@ApiModelProperty("当前为第几分片") private int chunk;
@ApiModelProperty("每个分块的大小") private long size;
@ApiModelProperty("分片总数") private int chunkTotal;
@ApiModelProperty("主体类型--这个字段是我项目中的其他业务逻辑可以忽略") private int objectType;
@ApiModelProperty("分块文件传输对象") private MultipartFile file;
Ⅲ c#文件分片上传,断点续传
vs2012 实现多文件分片断点续传。前端webupload md5计算加密文件,分片发送文件。后端验证组合文件。
Ⅳ js 大文件分片上传处理如何实现
推荐采用webuploader控件来解决。
关于WebUploader的功能说明:
大文件上传续传
支持超大文件上传(100G+)和续传,可以关闭浏览器,重启系统后仍然继续上传。
开源
提供ASP.NET,JSP,PHP示例和源代码,其中JSP提供MySQL,Oracle,SQL Server数据库的配置和示例代码。
分片、并发
分片与并发结合,将一个大文件分割成多块,并发上传,极大地提高大文件的上传速度。
当网络问题导致传输错误时,只需要重传出错分片,而不是整个文件。另外分片传输能够更加实时的跟踪上传进度。
预览、压缩
支持常用图片格式jpg,jpeg,gif,bmp,png预览与压缩,节省网络数据传输。
解析jpeg中的meta信息,对于各种orientation做了正确的处理,同时压缩后上传保留图片的所有原始meta数据。
多途径添加文件
支持文件多选,类型过滤,拖拽(文件&文件夹),图片粘贴功能。上传本地指定路径的文件,不需要通过点击按钮选择文件。
粘贴功能主要体现在当有图片数据在剪切板中时(截屏工具如QQ(Ctrl + ALT + A), 网页中右击图片点击复制),Ctrl + V便可添加此图片文件。
HTML5 & FLASH
兼容主流浏览器和低版本浏览器,接口一致,实现了两套运行时支持,用户无需关心内部用了什么内核。而且支持IE6,IE8浏览器。
同时Flash部分没有做任何UI相关的工作,方便不关心flash的用户扩展和自定义业务需求。
基于内存映射模式进行IO操作,充分发挥操作系统性能。
MD5秒传
当文件体积大、量比较多时,支持上传前做文件md5值验证,一致则可直接跳过。
如果服务端与前端统一修改算法,取段md5,可大大提升验证性能,耗时在20ms左右。
易扩展、可拆分
采用可拆分机制, 将各个功能独立成了小组件,可自由搭配。
采用AMD规范组织代码,清晰明了,方便高级玩家扩展。
Ⅳ 网页 大文件分片上传处理如何实现
1.首先获取文件(音视频、图片) fileInfo = { = "public.movie"; UIImagePickerController...
2.将获取到的文件分片 首先,我将获取到的文件保存在这这样一个类中 @interface CNFile : NSObject @property (nonatomic,assign) NSInteger ...
Ⅵ Android上大文件分片上传 具体怎么弄
正常情况下,一般都是在长传完成后,在服务器直接保存。
?
1
2
3
4
5
6
7
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
//保存文件
context.Request.Files[0].SaveAs(context.Server.MapPath("~/1/" + context.Request.Files[0].FileName));
context.Response.Write("Hello World");
}
最近项目中用网络开源的上传组件webuploader,官方介绍webuploader支持分片上传。具体webuploader的使用方法见官网http://fex..com/webuploader/。
?
1
2
3
4
5
6
7
8
9
10
11
12
var uploader = WebUploader.create({
auto: true,
swf:'/webuploader/Uploader.swf',
// 文件接收服务端。
server: '/Uploader.ashx',
// 内部根据当前运行是创建,可能是input元素,也可能是flash.
pick: '#filePicker',
chunked: true,//开启分片上传
threads: 1,//上传并发数
//由于Http的无状态特征,在往服务器发送数据过程传递一个进入当前页面是生成的GUID作为标示
formData: {guid:"<%=Guid.NewGuid().ToString()%>"}
});
webuploader的分片上传是把文件分成若干份,然后向你定义的文件接收端post数据,如果上传的文件大于分片的尺寸,就会进行分片,然后会在post的数据中添加两个form元素chunk和chunks,前者标示当前分片在上传分片中的顺序(从0开始),后者代表总分片数。
Ⅶ 局域网 大文件分片上传处理如何实现
如果向公网上面传,则没啥好办法,因为公网的路由器太多了,默认基本都是1500字节。如果是私网自己能控制,也可以把路由器切片调大一些,但自己一定要明白自己的大文件不分片是多少(一般情况下加上双层标签就算多的了),要注意分片的合理性,适合就好。
Ⅷ asp.net 大文件分片上传处理如何实现
用FormData对象可以实现,参考网页链接
Ⅸ PHP实现浏览器端大文件分片上传如何实现
分片上传的原理就是通过切割上传文件,然后在浏览器的头部通过etag来进行划分文件传输,服务器端接收到文件片段和分割起始符之后,进行拼接文件,最后合成一个大文件。
你可以自己通过php来获取浏览器头部传输标志来进行文件的拼接组装,也可以通过现有的大文件传输类来上传文件。
关键点
记住分割文件点,也就是分割文件的顺序,拼接文件需要通过etag按照顺序拼接,分片可以并发传输,这其实也是并发下载的原理。