0

0

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

php中文网

php中文网

发布时间:2016-06-23 13:31:06

|

1473人浏览过

|

来源于php中文网

原创

来源:

七牛云

PHPSDK下载:http://pan.baidu.com/s/1o69TGcM

7.X版本:

DEMO:

<?phprequire_once './vendor/autoload.php'; use Qiniu\Auth;use Qiniu\Storage\BucketManager;use Qiniu\Storage\UploadManager; $accessKey = 'accessKey';$secretKey = 'secretKey';$auth = new Auth($accessKey, $secretKey); $bucketMgr = New BucketManager($auth);$bucket = 'wsy100';$key = 'QQ图片20150604131612.png'; //文件删除/* $err = $bucketMgr->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\20150604131612.png');echo "\n====> putFile result: \n";if ($err !== null) {    var_dump($err);} else {    print_r($ret);}


立即学习PHP免费学习笔记(深入)”;

上传远程URL文件:

$url='http://img.hb.aicdn.com/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\20150504194317.png');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;}


立即学习PHP免费学习笔记(深入)”;

写完才知道有现成的

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

可以用。权当练手了吧

ajax上传预览见:

DEMO:http://t.zy62.com/wx.php/Index/upload

API:http://developer.qiniu.com/docs/v6/api/reference/rs/stat.html

极品模板微商城订单系统
极品模板微商城订单系统

微商城订单管理系统是一款基于php+mysql开发的php订单管理系统,她的特点如下: 产品特色: 支持商品规格、订单短信提醒,订单提交限制,站外调用, 批量发货/导出,数据报表,物流轨迹、免签支付等。 1、高度开源:除核心授权文件外全部开源,二开方便。 2、分布式部署:支持分布式部署、支持数据库读写分离。 3、第三方存储:支持附件腾讯云、阿里云、七牛云存储

下载

6.X版本

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

七牛文档:http://developer.qiniu.com/docs/v6/sdk/legacy-php-sdk.html

封装好的下载地址:http://pan.baidu.com/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" => "<Hash string>", *         "key" => "<Key string>" *         ], *         null *         ] *         *         失败时: [ *         null, *         Qiniu/Http/Error *         ] * @link http://developer.qiniu.com/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 http://developer.qiniu.com/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 http://developer.qiniu.com/docs/v6/api/overview/appendix.html#urlsafe-base64 */function base64_urlSafeEncode($data){	$find = array('+', '/');	$replace = array('-', '_');	return str_replace($find, $replace, base64_encode($data));}


立即学习PHP免费学习笔记(深入)”;

使用方法:

Qiniu_Fetch($client,'http://phpcto.b0.upaiyun.com/courselesson/3/2015104031642-h23061.mp4',$bucket,time().'.mp4');

获取所有文件信息:

<?phprequire_once("qiniu/rs.php");require_once("qiniu/rsf.php");$bucket = 'wsy100';$key = "qqConnect_Server_SDK_php_v2.0.zip";$accessKey = '';$secretKey = ''; Qiniu_SetKeys($accessKey, $secretKey);$client = new Qiniu_MacHttpClient(null);$putPolicy = new Qiniu_RS_PutPolicy($bucket);$upToken = $putPolicy->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));


立即学习PHP免费学习笔记(深入)”;

阿里云OSS

获取bucket资源列表

<?phprequire_once './aliyun.php';use \Aliyun\OSS\OSSClient;try {    $client = OSSClient::factory(array(    'AccessKeyId' => '//Your AccessKeyId',    'AccessKeySecret' => 'Your AccessKeySecret',    //在https://ak-console.aliyun.com/获取));$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免费学习笔记(深入)”;

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

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


立即学习PHP免费学习笔记(深入)”;

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Golang 测试体系与代码质量保障:工程级可靠性建设
Golang 测试体系与代码质量保障:工程级可靠性建设

Go语言测试体系与代码质量保障聚焦于构建工程级可靠性系统。本专题深入解析Go的测试工具链(如go test)、单元测试、集成测试及端到端测试实践,结合代码覆盖率分析、静态代码扫描(如go vet)和动态分析工具,建立全链路质量监控机制。通过自动化测试框架、持续集成(CI)流水线配置及代码审查规范,实现测试用例管理、缺陷追踪与质量门禁控制,确保代码健壮性与可维护性,为高可靠性工程系统提供质量保障。

6

2026.02.28

Golang 工程化架构设计:可维护与可演进系统构建
Golang 工程化架构设计:可维护与可演进系统构建

Go语言工程化架构设计专注于构建高可维护性、可演进的企业级系统。本专题深入探讨Go项目的目录结构设计、模块划分、依赖管理等核心架构原则,涵盖微服务架构、领域驱动设计(DDD)在Go中的实践应用。通过实战案例解析接口抽象、错误处理、配置管理、日志监控等关键工程化技术,帮助开发者掌握构建稳定、可扩展Go应用的最佳实践方法。

6

2026.02.28

Golang 性能分析与运行时机制:构建高性能程序
Golang 性能分析与运行时机制:构建高性能程序

Go语言以其高效的并发模型和优异的性能表现广泛应用于高并发、高性能场景。其运行时机制包括 Goroutine 调度、内存管理、垃圾回收等方面,深入理解这些机制有助于编写更高效稳定的程序。本专题将系统讲解 Golang 的性能分析工具使用、常见性能瓶颈定位及优化策略,并结合实际案例剖析 Go 程序的运行时行为,帮助开发者掌握构建高性能应用的关键技能。

8

2026.02.28

Golang 并发编程模型与工程实践:从语言特性到系统性能
Golang 并发编程模型与工程实践:从语言特性到系统性能

本专题系统讲解 Golang 并发编程模型,从语言级特性出发,深入理解 goroutine、channel 与调度机制。结合工程实践,分析并发设计模式、性能瓶颈与资源控制策略,帮助将并发能力有效转化为稳定、可扩展的系统性能优势。

14

2026.02.27

Golang 高级特性与最佳实践:提升代码艺术
Golang 高级特性与最佳实践:提升代码艺术

本专题深入剖析 Golang 的高级特性与工程级最佳实践,涵盖并发模型、内存管理、接口设计与错误处理策略。通过真实场景与代码对比,引导从“可运行”走向“高质量”,帮助构建高性能、可扩展、易维护的优雅 Go 代码体系。

17

2026.02.27

Golang 测试与调试专题:确保代码可靠性
Golang 测试与调试专题:确保代码可靠性

本专题聚焦 Golang 的测试与调试体系,系统讲解单元测试、表驱动测试、基准测试与覆盖率分析方法,并深入剖析调试工具与常见问题定位思路。通过实践示例,引导建立可验证、可回归的工程习惯,从而持续提升代码可靠性与可维护性。

2

2026.02.27

漫蛙app官网链接入口
漫蛙app官网链接入口

漫蛙App官网提供多条稳定入口,包括 https://manwa.me、https

130

2026.02.27

deepseek在线提问
deepseek在线提问

本合集汇总了DeepSeek在线提问技巧与免登录使用入口,助你快速上手AI对话、写作、分析等功能。阅读专题下面的文章了解更多详细内容。

8

2026.02.27

AO3官网直接进入
AO3官网直接进入

AO3官网最新入口合集,汇总2026年可用官方及镜像链接,助你快速稳定访问Archive of Our Own平台。阅读专题下面的文章了解更多详细内容。

208

2026.02.27

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
第二十二期_综合实战
第二十二期_综合实战

共96课时 | 7.8万人学习

PHP注册时短信通知功能
PHP注册时短信通知功能

共8课时 | 12.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号