php获取flash上传视频文件大小,PHP+FLASH大文件断点续传功能分享

原标题:PHP+FLASH大文件断点续传功能分享

今天分享给大家一个项目中大文件断点续传功能.大文件切割分片上传. 个人感觉这个功能还不错,具有参考价值,现在把源码分享给大家,有需要的朋友可以参考.功能截图如下

b75de975ca5d19f05e96f7271bf45936.png

首先要让服务器支持大文件上传,设置如下

upload_max_filesize = 2M //PHP最大能接受的文件大小

post_max_size = 8M //PHP能收到的最大POST值'

memory_limit = 128M //内存上限

max_execution_time = 30 //最大执行时间

思路如下

1.建立上传文件夹

2.把文件从上传临时目录移动到上传文件夹

3.所有的文件块上传完成后,进行文件合成

4.删除文件夹

5.返回上传后的文件路径

前端ji部分

< type="text/java">

var userInfo = {userId:"kazaff", md5:"",truePath:'',categoryId:''};

var chunkSize = 5 * 1024* 1024;//分块大小 上线时候调成5M

var uniqueFileName = null; //文件唯一标识符

var md5Mark = null;

var backEndUrl = "{:U('Admin/FileManage/beforeUpload')}";

WebUploader.Uploader.register({

"before-send-file": "beforeSendFile",

"before-send": "beforeSend",

"after-send-file": "afterSendFile"

}, {

beforeSendFile: function(file){

//秒传验证

var task = new $.Deferred();

var start = new Date().getTime();

(new WebUploader.Uploader()).md5File(file, 0, 10*1024*1024).progress(function(percentage){

console.log(percentage);

}).then(function(val){

console.log("总耗时: "+((new Date().getTime()) - start)/1000);

md5Mark = val;

userInfo.md5 = val;

$.ajax({

type: "POST",

url: backEndUrl,

data: {

status: "md5Check",

md5: val,

categoryId:$('#categoryid').val()

},

cache: false,

timeout: 1000, //todo 超时的话,只能认为该文件不曾上传过

dataType: "json"

}).then(function(data, textStatus, jqXHR){

if(data.ifExist){ //若存在,这返回失败给WebUploader,表明该文件不需要上传

task.reject();

uploader.skipFile(file);

file.path = data.path;

UploadComlate(file,data);

}else{

task.resolve();

//拿到上传文件的唯一名称,用于断点续传

uniqueFileName = md5(''+userInfo.userId+file.name+file.type+file.lastModifiedDate+file.size);

}

}, function(jqXHR, textStatus, errorThrown){ //任何形式的验证失败,都触发重新上传

task.resolve();

//拿到上传文件的唯一名称,用于断点续传

uniqueFileName = md5(''+userInfo.userId+file.name+file.type+file.lastModifiedDate+file.size);

});

});

return $.when(task);

}, beforeSend: function(block){

//分片验证是否已传过,用于断点续传

var task = new $.Deferred();

$.ajax({

type: "POST",

url: backEndUrl,

data: {

status: "chunkCheck",

name: uniqueFileName,

chunkIndex: block.chunk,

size: block.end - block.start

},

cache: false,

timeout: 1000, //todo 超时的话,只能认为该分片未上传过

dataType: "json"

}).then(function(data, textStatus, jqXHR){

if(data.ifExist){ //若存在,返回失败给WebUploader,表明该分块不需要上传

task.reject();

}else{

task.resolve();

}

}, function(jqXHR, textStatus, errorThrown){ //任何形式的验证失败,都触发重新上传

task.resolve();

});

由于源码有点长此处省略,有需要源码的自己下载.................

>

php处理大文件部分代码

注: 由于php部分代码处理比较多,就不把代码粘贴出来了.源码包已经整理好,需要的朋友可以自己下载

百度网盘下载链接: https://pan.baidu.com/s/1hsCifvY 密码: i49f返回搜狐,查看更多

责任编辑:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值