100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > PHP阿里云OSS 七牛云 上传文件

PHP阿里云OSS 七牛云 上传文件

时间:2020-05-30 16:43:13

相关推荐

PHP阿里云OSS 七牛云 上传文件

后端开发|php教程

PHP阿里云OSS,七牛云 上传文件

后端开发-php教程

来源:

房产众筹系统源码,vscode怎么打开网页,ubuntu 完美解码,tomcat添加服务名,python地图爬虫,php开发安卓app开发,沈阳seo自然排名优化,商家网站@v,通知推送 网页 模板lzw

七牛云

网页源码微信二维码路径,ubuntu vi头文件,厕所地上小爬虫,js 算法php,非标品seolzw

PHPSDK下载:/s/1o69TGcM

视频课程网站源码,vscode编写asp,ubuntu怎样安装腾讯视频,查看tomcat指令,sqlite时间运算,网站 播放器插件,有没有前端ui框架,爬虫,php变量传值,夏津seo,评书网站程序源码,网页下象棋,帝国响应式网站模板,404 页面 源码,网址管理系统源码,视频网站程序下载lzw

7.X版本:

DEMO:

delete($bucket, $key);if ($err !== null) { var_dump($err);} else { echo delete ok;} *//* * 单个文件 * list($ret, $err) = $bucketMgr->stat($bucket, $key);echo "\n====> stat result: \n";if ($err !== null) { var_dump($err);} else { var_dump($ret);} */$token = $auth->uploadToken($bucket);$uploadMgr = New UploadManager(); list($ret, $err) = $uploadMgr->putFile($token, time()..jpg, C:\Users\Administrator\Pictures\images\0604131612.jpg);echo "\n====> putFile result: \n";if ($err !== null) { var_dump($err);} else { print_r($ret);}

上传远程URL文件:

$url=http://img./b3ddfada312d19dc0be9f17f9ca497767cb657871f50a-Hj44uu_fw658;$ret=$bucketMgr->fetch($url, $bucket, $key);print_r($ret);

2.获取bucket所有文件

list($items, $marker, $err) = $bucketMgr->listFiles($bucket, $prefix = null, $marker = null, $limit = 1000, $delimiter = null);echo "\n====> List result: \n";if ($err !== null) { var_dump($err);} else { echo "Marker: $marker\n"; echo items====>\n; print_r($items); //echo (string)$items[10][putTime]; //echo strtotime($items[10][putTime]);}

3.删除文件

$err = $bucketMgr->delete($bucket, $key);if ($err !== null) { var_dump($err);} else { echo delete ok;}

4.获取单个文件信息

list($ret, $err) = $bucketMgr->stat($bucket, $key);echo "\n====> stat result: \n";if ($err !== null) { var_dump($err);} else { print_r($ret);}

5.文件上传

$token = $auth->uploadToken($bucket);$uploadMgr = New UploadManager(); list($ret, $err) = $uploadMgr->putFile($token, date(Y-m-d-H-i-s,time())..jpg, C:\Users\Administrator\Pictures\0504194317.jpg);echo "\n====> putFile result: \n";if ($err !== null) { var_dump($err);} else { print_r($ret);}

puttime Epoch时间戳的转换

$puttime=substr(str_replace(., \,1.4357550505488E+16),0,10);echo $puttime;

trim替换也可以,暂时没找到系统函数转换,也可以除10000000

OR

$puttime=date(Y-m-d H:i:s,1.4357550505488E+16/10000000);

上传策略生成:

$data[scope]=wsy100;$data[deadline]=time()+3600;$encoded=urlsafe_base64_encode(json_encode($data));$signature=hash_hmac(sha1,$encoded,KEY,true);$encode_signed = urlsafe_base64_encode($signature);$UploadToken=AK:.$encode_signed.:.$encoded; echo $UploadToken; /* 第三步:对json序列化后的上传策略进行URL安全的Base64编码,得到如下encoded:eyJzY29wZSI6IndzeTEwMCIsImRlYWRsaW5lIjoxNDM1ODE3NzA5fQ==第四步:用SecretKey对编码后的上传策略进行HMAC-SHA1加密,并且做URL安全的Base64编码,得到如下的encoded_signed:Yu1NpdDvbM1NPr4IxTFsMBLxDQc=第五步:将 AccessKey、encode_signed 和 encoded 用 “:” 连接起来,得到如下的UploadToken:*/ function urlsafe_base64_encode($data) { $data = base64_encode($data); $data = str_replace(array(+,/),array(-,\_),$data); return $data;}

写完才知道有现成的

$token = $auth->uploadToken($bucket);

可以用。权当练手了吧

ajax上传预览见:

DEMO:/wx.php/Index/upload

API:/docs/v6/api/reference/rs/stat.html

6.X版本

6.x版本没有fetch获取远程URL资源上传的方法,封装了个.

七牛文档:/docs/v6/sdk/legacy-php-sdk.html

封装好的下载地址:/s/1gdu95yb

在qiniu/conf.php 15行后加了:

$QINIU_FETCH_HOST=http://iovip.qbox.me;//fetch URL

rsf.php末尾增加:

/** * 从指定URL抓取资源,并将该资源存储到指定空间中 * * @param $url 指定的URL * @param $bucket 目标资源空间 * @param $key 目标资源文件名 * * @return array[] 包含已拉取的文件信息。 * 成功时: [ * [ * "hash" => "", * "key" => "" * ], * null * ] * * 失败时: [ * null, * Qiniu/Http/Error * ] * @link /docs/v6/api/reference/rs/fetch.html */function Qiniu_Fetch($self,$url, $bucket, $key) {global $QINIU_FETCH_HOST;$resource = base64_urlSafeEncode ( $url );$to = entry ( $bucket, $key );$url = $QINIU_FETCH_HOST . /fetch/ . $resource . /to/ . $to;return Qiniu_Client_Call ( $self, $url );}/** * 计算七牛API中的数据格式 * * @param $bucket 待操作的空间名 * @param $key 待操作的文件名 * * @return 符合七牛API规格的数据格式 * @link /docs/v6/api/reference/data-formats.html */function entry($bucket, $key) {$en = $bucket;if (! empty ( $key )) {$en = $bucket . : . $key;}return base64_urlSafeEncode ( $en );}/** * 对提供的数据进行urlsafe的base64编码。 * * @param string $data 待编码的数据,一般为字符串 * * @return string 编码后的字符串 * @link /docs/v6/api/overview/appendix.html#urlsafe-base64 */function base64_urlSafeEncode($data){$find = array(+, /);$replace = array(-, \_);return str_replace($find, $replace, base64_encode($data));}

使用方法:

Qiniu_Fetch($client,http://phpcto./courselesson/3/104031642-h23061.mp4,$bucket,time()..mp4);

获取所有文件信息:

Token(null); //echo $upToken;exit();/* list($ret, $err) = Qiniu_RS_Stat($client, $bucket, $key);echo "Qiniu_RS_Stat result: \n";if ($err !== null) { print_r($err);} else { $ret[putTime]=date(Y-m-d H:i:s,$ret[putTime]/10000000); print_r($ret);} */print_r(Qiniu_RSF_ListPrefix($client,$bucket));

阿里云OSS

获取bucket资源列表

//Your AccessKeyId, AccessKeySecret => Your AccessKeySecret, //在https://ak-/获取));$client->createBucket(array( Bucket => Your Bucket,)); $objectListing = $client->listObjects(array( Bucket => Your Bucket,));foreach ($objectListing->getObjectSummarys() as $objectSummary) { echo $objectSummary->getKey();}} catch (\Aliyun\OSS\Exceptions\OSSException $ex) { echo "Error: " . $ex->getErrorCode() . "\n";} catch (\Aliyun\Common\Exceptions\ClientException $ex) { echo "ClientError: " . $ex->getMessage() . "\n";}

Fatal error: Uncaught exception ‘Aliyun\OSS\Exceptions\OSSException’ with message ‘The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.’解决方案

原因是PHP SDK默认使用杭州节点,而你的bucket非杭州节点,解决方案,在初始化时指定节点.

$client = OSSClient::factory(array( AccessKeyId => Your AccessKeyId, AccessKeySecret => Your AccessKeySecret, Endpoint => http://oss-cn-,//北京节点 ));

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。