日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

jquery 分片上传php,php 大文件分片上传

發布時間:2025/3/21 php 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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,

// 選擇文件的按鈕??蛇x。

// 內部根據當前運行是創建,可能是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 大文件分片上传的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。