前端部分

上传

//上传控件

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 大文件分片上传相关推荐

  1. python 大文件分片上传_Python实现大文件分片上传

    转载请注明出处:http://blog.csdn.net/jinixin/article/details/77545140 引言想借着这篇文章简要谈谈WebUploader大文件上传与Python结合 ...

  2. plupload分片上传php,plupload 大文件分片上传与PHP分片合并探索

    最近老大分给我了做一个电影cms系统,其中涉及到一个功能,使用七牛云的文件上传功能.七牛javascript skd,使用起来很方便,屏蔽了许多的技术细节.如果只满足与调用sdk,那么可能工作中也就没 ...

  3. GitHub 上传大小限制 大文件无法上传问题!

    壹. 首先下载git-lfs 需要配置lfs密钥(注意不是ssh的密钥)的请看https://github.com/git-lfs/git-lfs git lfs install 贰. 安装好后进入本 ...

  4. java http 上传大文件上传_java实现大文件的上传

    最近项目经理逼着让偶做树的展开,表嵌套表,可惜偶刚参加工作,水平低,这不在查资料嘛,可是不多久就传来了经理的叫嚣声,这么简单的东西,都一天了,你还没做完..................,哎真是郁闷 ...

  5. jquery 分片上传php,jquery 大文件分片上传插件 fcup.js

    软件介绍 fcup.js fcup 是一款支持大文件切片上传插件.该jquery插件使用简单,配置简单明了,支持上传类型指定,进度条查看上传进度.. 安装 直接下载源码,上传功能需要php环境,演示地 ...

  6. 大文件分片上传,断点续传,秒传 实现

    前段时间做视频上传业务,通过网页上传视频到服务器. 视频大小 小则几十M,大则 1G+,以一般的HTTP请求发送数据的方式的话,会遇到的问题:1,文件过大,超出服务端的请求大小限制:2,请求时间过长, ...

  7. Vue项目中遇到了大文件分片上传的问题

    Vue项目中遇到了大文件分片上传的问题,之前用过webuploader,索性就把Vue2.0与webuploader结合起来使用,封装了一个vue的上传组件,使用起来也比较舒爽. 上传就上传吧,为什么 ...

  8. .NetCore+WebUploader实现大文件分片上传

    项目要求通过网站上传大文件,比如视频文件,通过摸索实现了文件分片来上传,然后后台进行合并. 使用了开源的前台上传插件WebUploader(http://fex.baidu.com/webupload ...

  9. 大文件分片上传前端框架_无插件实现大文件分片上传,断点续传

    文件上传.gif 1. 简介: 本篇文章基于实际项目的开发,将介绍项目中关于大文件分片上传.文件验证.断点续传.手动重试上传等需求的使用场景及实现: 2. 项目需求 在一个音视频的添加中,既要有音视频 ...

最新文章

  1. 鸿蒙公测报名表填写,鸿蒙公测第二期报名公测版_华为鸿蒙os2.0第二期报名申请内测版 - 风云下载...
  2. mvn命令安装jar包--转
  3. Repeater在无数据记录时显示“无相关记录...”
  4. 微软Build 2019大会.NET课程视频汇总
  5. 七步从AngularJS菜鸟到专家(6):服务
  6. web.config文件访问物理路径_计算机操作系统学习笔记(五):文件管理
  7. 机械加工工艺师手册_机械加工中车、刨、铣、镗、磨、钻、线切割等设备,你知道哪些?...
  8. 第一个Activity传到第二个Activity
  9. python如何操作oracle数据库_Python连接oracle数据库的基本操作
  10. 华为手机耳机sws音效是什么_【小知识】:华为SWS音效介绍。
  11. HTML5+CSS3练习小实例:发光果冻泡泡动画
  12. Unity SRP初识之URP
  13. 错误隐藏学习手记(五)
  14. 深度解析服务器科普知识
  15. (转)对冲基金:AQR合伙人:“沉闷”股票回报更好
  16. 01博弈三要素和囚徒困境
  17. OpenCv-C++-亚像素级别角点检测(检测子像素中的corner的位置)
  18. Scrapy爬虫项目——阿里文学当当网
  19. MP20 MBO issue summary
  20. Android 文字转语音使用讯飞语音SDK(eclipse版 无UI)

热门文章

  1. 深入Python(5):递归
  2. Python--format()学习记录
  3. LeetCode-链表-203. 移除链表元素
  4. QCustomplot设置背景为透明色
  5. Python编程基础:第二十九节 异常Exception
  6. numpy.triu详解
  7. Java 8 Stream API详解--转
  8. 【个人总结】知识晶体的前中后台
  9. CAFFE学习笔记(一)Caffe_Example之训练mnist
  10. 开源的ResearchKit:苹果将如何颠覆未来医疗?