jquery 分片上传php,php 大文件分片上传
前端部分
上传
//上传控件
uploadBig('upload','zip,rar,7z,tar',{
id: '',
type: 'upload_file',
} ,(res)=>{
//todo 上传完成回调
console.log('上传完成',res);
},(percent)=>{
//todo 上传中回调
console.log(percent);
})
/*
* 大文件分片上传
* @param btn 绑定上传按钮 id
* @param ext 上传文件后缀限制 英文逗号分隔
* @param formData 额外参数
* @param callback 回调函数 function
* @param progress 上传过程回调函数 function
*
*/
function uploadBig(btn,ext,formData,callback,progress){
var arr = ext.split(',');
var mimeTypes = '';
for(var ai=0;ai
mimeTypes += '.'+arr[ai]+','
}
mimeTypes = mimeTypes.substring(0,mimeTypes.length-1);
let uploader = new WebUploader.Uploader({
// swf文件路径
// swf: 'webuploader/Uploader.swf',
// 文件接收服务端。
server: 'uploader.php',
auto:true,
// 选择文件的按钮。可选。
// 内部根据当前运行是创建,可能是input元素,也可能是flash.
pick: '#'+btn,
// 分片上传。
chunked: true,
threads:1,//并发上传数
chunkSize: 2 1024 1024,
// 不压缩image, 默认如果是jpeg,文件上传前会压缩一把再上传!
resize: false,
accept: {
title:'',
extensions:ext,
mimeTypes:mimeTypes
},
formData: formData
});
// //开始上传
// $('#ctlBtn').click(function () {
// uploader.upload();
// });
let $list = $('#upload_big_list');
// 当有文件被添加进队列的时候
uploader.on( 'fileQueued', function( file ) {
$list.append( '
// '
' + file.name + '
' +
// '
'
' );
uploader.upload();
});
// 文件上传过程中创建进度条实时显示。
uploader.on( 'uploadProgress', function( file, percentage) {
if(typeof progress == 'function'){
progress(percentage);
}
});
uploader.on( 'uploadSuccess', function( file, response ) {
if (response.status == 1) {
callback(response);
}
});
uploader.on("error", function (type) {
if (type == "Q_TYPE_DENIED") {
alert("上传文件类型错误!");
}
else if(type == 'F_DUPLICATE'){
alert("上传文件重复");
}
// else if (type == "Q_EXCEED_SIZE_LIMIT") {
// alert("文件大小不能超过2M");
// }
else {
alert("上传出错,请联系管理员。error: "+type);
}
});
}
后台 uploader.php<?php
header("Content-type: text/html; charset=utf-8");
header('Access-Control-Allow-Origin:*');
//储存分片
//获取文件后缀名
$ext_name = substr(strrchr($_REQUEST['name'], '.'), 1);
//随机生成保存的文件名
$file_name = GetRandStr(10).".$ext_name";
//分片保存目录
$request_name = $_REQUEST['name'];
$tmp_dir = 'upload/chunk_tmp/' .$request_name . '/';
//文件保存目录
$target_file = "upload/;
if (! is_dir($tmp_dir)) {
mkdir($tmp_dir, 0777, true);
}
if(!isset($_REQUEST['chunk'])){
$chunk = '0';
$chunks = '1';
}else{
$chunk = $_REQUEST['chunk'];
$chunks = $_REQUEST['chunks'];
}
move_uploaded_file($_FILES['file']['tmp_name'], $tmp_dir . $chunk);
//合并分片
if ($chunk == $chunks - 1) { //最后一个分片
if (! is_dir($target_file)) {
mkdir($target_file, 0777, true);
}
$target_file .= $file_name;
$handle = fopen($target_file, 'x+');
for ($i=0; $i
fwrite($handle, @file_get_contents($tmp_dir . $i));
}
fclose($handle);
//删除分片文件
// for ($i=0; $i
// @unlink($tmp_dir . $i);
// }
// rmdir($tmp_dir);
$msg = [
'$_FILES' => json_encode($_FILES),
'$_REQUEST' => json_encode($_REQUEST),
];
echo json_encode(['status' => 1,'file_path'=>$target_file,'file_name'=>$file_name]);exit;
}else{
$target_file = '';
}
$msg = [
'$_FILES' => json_encode($_FILES),
'$_REQUEST' => json_encode($_REQUEST),
];
echo json_encode(['status' => 1, 'msg' => json_encode($msg),'file_path'=>$target_file,'file_name'=>$file_name]);exit;
function GetRandStr ($length){
$str='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$len=strlen($str)-1;
$randstr='';
for($i=0;$i
$num=mt_rand(0,$len);
$randstr .= $str[$num];
}
return $randstr;
}
jquery 分片上传php,php 大文件分片上传相关推荐
- python 大文件分片上传_Python实现大文件分片上传
转载请注明出处:http://blog.csdn.net/jinixin/article/details/77545140 引言想借着这篇文章简要谈谈WebUploader大文件上传与Python结合 ...
- plupload分片上传php,plupload 大文件分片上传与PHP分片合并探索
最近老大分给我了做一个电影cms系统,其中涉及到一个功能,使用七牛云的文件上传功能.七牛javascript skd,使用起来很方便,屏蔽了许多的技术细节.如果只满足与调用sdk,那么可能工作中也就没 ...
- GitHub 上传大小限制 大文件无法上传问题!
壹. 首先下载git-lfs 需要配置lfs密钥(注意不是ssh的密钥)的请看https://github.com/git-lfs/git-lfs git lfs install 贰. 安装好后进入本 ...
- java http 上传大文件上传_java实现大文件的上传
最近项目经理逼着让偶做树的展开,表嵌套表,可惜偶刚参加工作,水平低,这不在查资料嘛,可是不多久就传来了经理的叫嚣声,这么简单的东西,都一天了,你还没做完..................,哎真是郁闷 ...
- jquery 分片上传php,jquery 大文件分片上传插件 fcup.js
软件介绍 fcup.js fcup 是一款支持大文件切片上传插件.该jquery插件使用简单,配置简单明了,支持上传类型指定,进度条查看上传进度.. 安装 直接下载源码,上传功能需要php环境,演示地 ...
- 大文件分片上传,断点续传,秒传 实现
前段时间做视频上传业务,通过网页上传视频到服务器. 视频大小 小则几十M,大则 1G+,以一般的HTTP请求发送数据的方式的话,会遇到的问题:1,文件过大,超出服务端的请求大小限制:2,请求时间过长, ...
- Vue项目中遇到了大文件分片上传的问题
Vue项目中遇到了大文件分片上传的问题,之前用过webuploader,索性就把Vue2.0与webuploader结合起来使用,封装了一个vue的上传组件,使用起来也比较舒爽. 上传就上传吧,为什么 ...
- .NetCore+WebUploader实现大文件分片上传
项目要求通过网站上传大文件,比如视频文件,通过摸索实现了文件分片来上传,然后后台进行合并. 使用了开源的前台上传插件WebUploader(http://fex.baidu.com/webupload ...
- 大文件分片上传前端框架_无插件实现大文件分片上传,断点续传
文件上传.gif 1. 简介: 本篇文章基于实际项目的开发,将介绍项目中关于大文件分片上传.文件验证.断点续传.手动重试上传等需求的使用场景及实现: 2. 项目需求 在一个音视频的添加中,既要有音视频 ...
最新文章
- 鸿蒙公测报名表填写,鸿蒙公测第二期报名公测版_华为鸿蒙os2.0第二期报名申请内测版 - 风云下载...
- mvn命令安装jar包--转
- Repeater在无数据记录时显示“无相关记录...”
- 微软Build 2019大会.NET课程视频汇总
- 七步从AngularJS菜鸟到专家(6):服务
- web.config文件访问物理路径_计算机操作系统学习笔记(五):文件管理
- 机械加工工艺师手册_机械加工中车、刨、铣、镗、磨、钻、线切割等设备,你知道哪些?...
- 第一个Activity传到第二个Activity
- python如何操作oracle数据库_Python连接oracle数据库的基本操作
- 华为手机耳机sws音效是什么_【小知识】:华为SWS音效介绍。
- HTML5+CSS3练习小实例:发光果冻泡泡动画
- Unity SRP初识之URP
- 错误隐藏学习手记(五)
- 深度解析服务器科普知识
- (转)对冲基金:AQR合伙人:“沉闷”股票回报更好
- 01博弈三要素和囚徒困境
- OpenCv-C++-亚像素级别角点检测(检测子像素中的corner的位置)
- Scrapy爬虫项目——阿里文学当当网
- MP20 MBO issue summary
- Android 文字转语音使用讯飞语音SDK(eclipse版 无UI)