plupload分片上传php,在服务器端处理plupload的分块上传

Kris Erickso..

16

以下是解析块的方法,并将结果存储在$ upload_file中(更改$ uploaded_file以匹配您需要的内容).

$uploaded_file = '/tmp/uploadFile.jpg';

$chunks = isset($_POST["chunks"]) ? $_POST["chunks"] : 0;

// If we have a chunked operation...

if ($chunks > 0)

{

// Get the chunk number...

$chunk = isset($_POST["chunk"]) ? $_POST["chunk"] : 0;

if ($chunk == 0)

{

if (!isset($_SESSION['last_chunk']))

{

$_SESSION['last_chunk'] = array();

}

$_SESSION['last_chunk'][$_POST['unique_id']] = $chunk;

}

else

{

if ($_SESSION['last_chunk'][$_POST['unique_id']] != $chunk + 1)

{

die('{"jsonrpc" : "2.0", "error" : {"code": 192, "message": "Uploaded chunks out of sequence. Try again."}, "id" : "id"}');

}

}

$tmp_dir = sys_get_temp_dir();

// We need a unique filename to identify the file...

$tmp_filename = $tmp_dir.$_POST['unique_id'];

// If it is the first chunk we have to create the file, othewise we append...

$out_fp = fopen($tmp_filename, $chunk == 0 ? "wb" : "ab");

// The file we are reading from...

$uploaded_file = $_FILES['file']['tmp_name'];

$in_fp = fopen($uploaded_file, "rb");

// Copy the chunk that was uploaded, into the file we are uploading...

while ($buff = fread($in_fp, 4096))

{

fwrite($out_fp, $buff);

}

fclose($out_fp);

fclose($in_fp);

// If we are the last chunk copy the file to the final location and continue on...

if ($chunk == $chunks - 1)

{

copy($tmp_filename, $uploaded_file);

unset($_SESSION['last_chunk'][$_POST['unique_id']]);

if (count($_SESSION['last_chunk']) == 0)

{

unset($_SESSION['last_chunk']);

}

}

else

{

// Otherwise report the result to the uploader...

echo'{"jsonrpc" : "2.0", "result" : null, "id" : "id"}';

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值