不推荐再使用,功能已经集成到 https://github.com/upyun/php-sdk
- 使用说明
- 安装说明
- 要求
- [通过composer安装](#composer install)
- [直接下载压缩包安装](#download zip and install)
- 示例
- 贡献代码
- 社区
- 许可证
普通方式进行大文件上传时,稳定性较低,无法断点续传。使用该SDK进行大文件上传时,会将大文件分成各个小块,再进行上传。当上传中断时,在expiration
有效期內,只需继续上传剩余的块即可,实现断点续传功能。
(\Crocodile\Upload::upload()
方法会自动将剩余的块上传)。
注意:
该特性仅当上传相同的文件、分块大小、上传的目标路径都不变时才有效 最大支持1024个分块,每个块不能小于1MB,不能大于5MB。
上传之前可以通过\Crocodile\Upload::setBlockSize()
设置分块的大小。
php 5.3+
通过composer安装
1.安装composer
curl -s https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
2.在你的项目根目录下创建composer.json
,并添加如下内容
{
"repositories": [
{
"type": "git",
"url": "https://github.com/upyun/multipart-upload-php-sdk.git"
}
],
"require":{
"upyun/crocodile/php-sdk":"dev-master"
}
}
3.项目根目录运行 composer install
4.在项目中添加如下代码
//注意修改项目根目录
include '/your/project/root/path/vendor/autoload.php'
通过github直接下载最新稳定版
在项目中添加以下代码
include "Crocodile/Upload.php";
include "Crocodile/Signature.php";
include "Crocodile/File.php";
include "Crocodile/Util/MultiPartPost.php";
use Crocodile\Signature;
use Crocodile\File;
use Crocodile\Upload;
$formApiKey = "w3mRPyWWwG_your_form_api_key_6C5X9pac=";
$sign = new Signature($formApiKey);
$upload = new Upload($sign);
$upload->setBucketName('your_bucket_name');//上传的空间
try {
//其他参数参见文档: http://docs.upyun.com/api/form_api/#Policy内容详解
$options = array(
'path' => '/test.png', // 文件在服务器保存的路径,必须
'return_url' => 'http://yourdomain.com', // 回调地址,可选
'notify_url' => 'http://yourdomain.com', // 通知地址,可选
);
$file = new File("/path/to/your/file");
$result = $upload->upload($file, $options);
} catch(\Exception $e) {
echo $e->getMessage();
}
上传文件后,可选有三种方式进行上传结果的回调通知。客户端需要对回调进行验证
- 如果没有设置
return_url
,服务端直接同步返回json数据进行验证 - 如果设置了
return_url
,服务端将返回302
跳转到return_url
,并将数据以GET
方式返回 - 如果设置了
notify_url
,服务端异步将数据POST
到notify_url
注意 notify_url
和return_url
可以同时设置
三种回调验证代码如下所示:
1.直接返回json数据验证
use Crocodile\Signature;
use Crocodile\Upload;
$formApiKey = "w3mRPyWWwG_your_form_api_key_6C5X9pac=";
$sign = new Signature($formApiKey);
upload = new Upload($sign);
$upload->setBucketName('your_bucket_name');//上传的空间
try {
//其他参数参见文档: http://docs.upyun.com/api/form_api/#Policy内容详解
$options = array(
'path' => '/test.png', // 文件在服务器保存的路径,必须
);
$result = $upload->upload(
new \Crocodile\File("/path/to/your/file"),
$options
);
if($upload->getSignature()->syncJsonValidate($result)) {
//回调验证成功
} else {
//回调验证失败
}
} catch(\Exception $e) {
echo $e->getMessage();
}
2.302
跳转到return_url
验证
use Crocodile\Signature;
/**
* 表单API和上传时保持一致
*/
$formApiKey = "w3mRPyWG_your_form_api_key_6C57AX9pac=";
$sign = new Signature($formApiKey);
if($sign->returnValidate()) {
echo '回调签名验证成功';
} else {
echo '回调签名验证失败';
}
3.notify_url
异步验证
use Crocodile\Signature;
/**
* 表单API和上传时保持一致
*/
$formApiKey = "w3mRPOHwG_your_form_api_key_6C57AX9pac=";
$sign = new Signature($formApiKey);
if($sign->notifyValidate()) {
echo '回调签名验证成功';
} else {
echo '回调签名验证失败';
}
- Fork
- 为新特性创建一个新的分支
- 发送一个 pull request 到 develop 分支
UPYUN 分块上传PHP-SDK基于 MIT 开源协议