function upload_baidupcs($zip_file_path) { $file_blocks = array(); //分片上传文件成功后返回的md5值数组集合 $file_block_size = 2 * 1024 * 1024; // 2M $rmote_dir = str_replace('//', '/', REMOTE_ROOT . '/backup/'); $file_name = basename($zip_file_path); $BaiduPCS = new BaiduPCS(BAIDU_TOKEN); // 开始分片上传 $handle = @fopen($zip_file_path, 'rb'); while (!@feof($handle)) { $file_block_content = fread($handle, $file_block_size); $temp = $BaiduPCS->upload($file_block_content, $remote_dir, $file_name, false, true); if (!is_array($temp)) { $temp = json_decode($temp, true); } if (isset($temp['md5'])) { array_push($file_blocks, $temp['md5']); } } fclose($handle); //@unlink($zip_file_path); if (count($file_blocks) > 1) { $BaiduPCS->createSuperFile($remote_dir, $file_name, $file_blocks, ''); } }
$pcs = new BaiduPCS($access_token); if (!file_exists($file)) { exit('文件不存在,请检查路径是否正确'); } else { $fileSize = filesize($file); $handle = fopen($file, 'rb'); //分片上传文件成功后返回的md5值数组集合 $filesBlock = array(); //设置分片上传文件块大小为20K $blockSize = 20480; if ($fileSize < $blockSize) { exit('请选择体积大于20480个字节的文件'); } $isCreateSuperFile = TRUE; while (!feof($handle)) { $temp = $pcs->upload(fread($handle, $blockSize), $targetPath, $fileName, $newFileName, $isCreateSuperFile); if (!is_array($temp)) { $temp = json_decode($temp, true); } array_push($filesBlock, $temp); } fclose($handle); if (count($filesBlock) > 1) { $params = array(); foreach ($filesBlock as $value) { array_push($params, $value['md5']); } $result = $pcs->createSuperFile($targetPath, $fileName, $params, $newFileName); echo $result; } }