如何在 Laravel 中使用阿里云 OSS

阿里云提供了基于命名空间的 V2 版 SDK,但是文档不是很完整,使用门槛比较高,于是我封装了一个 Composer 包:https://github.com/johnlui/AliyunOSS

安装

将以下内容增加到 composer.json:

require: {

    "johnlui/aliyun-oss": "dev-master"

}

然后运行 composer update

使用

use JohnLui\AliyunOSS\AliyunOSS;


// 构建 OSSClient 对象
// 三个参数:服务器地址、阿里云提供的AccessKeyId、AccessKeySecret
$oss = AliyunOSS::boot('http://oss-cn-qingdao.aliyuncs.com',  $AccessKeyId, $AccessKeySecret);

// 设置 Bucket
$oss = $oss->setBucket($bucketName);

// 上传一个文件(示例文件为 public 目录下的 robots.txt)
// 两个参数:资源名称、文件路径
$oss->uploadFile('robots.txt', public_path('robots.txt'));

// 从服务器获取这个资源的 URL 并打印
// 两个参数:资源名称、过期时间
echo $oss->getUrl('robots.txt', new DateTime("+1 day"));


就是这么简单,喜欢可以去 Github 上 Star 哦!

WRITTEN BY

avatar
2015.1.6   /   热度:10699   /   分类: Laravel

评论:

罗彦
2016-10-22 12:02
博主, 您可以添加一个设置文件 MIME 类型的方法吗????
罗彦
2016-10-22 11:26
博主你好, 现在项目需要让上传的文件直接在浏览器显示, 由于没有设置 MIME 类型浏览器不认识上传的文件导致直接下载, 您的组件中貌似没有发现设置contentType的方法, 还是说看漏了..请问博主有这个方法吗???
jxr
2016-09-20 16:55
上传成功  返回居然是   null  不去后台看还以为出错了。
jxr
2016-09-20 16:53
上传  不能自动识别是什么类型吗 mime  上传图片也是这个类型 application/octet-stream
哈哈哈
2016-08-18 23:23
2016最新的阿里云lnmp部署laravel,我觉得很不错的,你们可以参考下:http://blog.earnp.com/article/41
爱顺顺
2016-08-06 15:51
写错啦是OSS
爱顺顺
2016-08-06 15:06
老师, 我oos已经有啦1.js文件,我想往里面追加内容,而不是整个文件替换,可以吗?
小白白
2016-08-04 11:07
老师,这个不能上传MP3格式的音频文件吗,错误是[curl] 56: Recv failure: Connection was aborted [url]
JohnLui
2016-08-04 14:04
@小白白:当然能上传,你传别的文件能成功吗?
cost92
2016-07-28 11:38
Error: Class 'JohnLui\AliyunOSS\AliyunOSS' not found in  用use 怎么找不到这个类呢?
JohnLui
2016-07-28 11:39
@cost92:什么框架?
cost92
2016-07-28 11:56
@JohnLui:laravel 框架 我用composer加载下来的oss 但就是找不到了oss的类
JohnLui
2016-07-28 11:58
@cost92:估计是没安装成功。

不用多次回复,我网站的评论是我人工审核的。
cost92
2016-07-28 11:59
@JohnLui:那我删除重新安装一次看看
cost92
2016-07-28 14:13
@JohnLui:现在已经可了,但是把图片保存在Bucket下面的文件下面,怎么处理呢?
cost92
2016-07-28 14:48
@JohnLui:老师,我想把图片上传到oss下面的某个文件夹下面,怎么处理呢?
xiangtianxiao
2016-05-04 15:44
你的教程对我用处很大。十分感谢
东方皓
2016-02-19 18:34
使用了你的库,发现少了deleteMultipleObjects命令,群主有时间可以完善一个吗?
落墨
2016-01-13 17:12
运行 composer update  的时候不成功提示  Warning:This development build of composer is over 60days old. It is recommended to update it by running "E:\php\composer.phar self-update" to get the latest version.
Loading composer repositories with package information .

这是什么原因呢
JohnLui
2016-01-13 17:17
@落墨:读一下提示你就明白了。
落墨
2016-01-13 17:19
@JohnLui:我的php是5.5啊   应该是比较新的了啊
JohnLui
2016-01-13 17:20
@落墨:翻译一下吧。。。
落墨
2016-01-13 17:21
@JohnLui:咳咳  不是说版本老需要更新最新版嘛
mr-zhangyuan
2015-11-16 22:44
你好 请问你这代码里面的有效时间有什么用处呢。可不可以取消,因为我把图片上传到oss上后,我还需要从服务器获取它的url放在数据库的字段里,那么这里封装的函数可以修复改吗,
// 从服务器获取这个资源的 URL 并打印
// 两个参数:资源名称、过期时间
echo $oss->getUrl('robots.txt', new DateTime("+1 day"));

或者我直接把过期时间改为(+36500day)
也就是说这样有效期就可以有100年了对吗,但是总感觉怪怪的。因为我上传到阿里云后,以后还要用
JohnLui
2015-11-16 22:47
@mr-zhangyuan:这是为私有 bucket 服务的,文件只有通过特定链接才能获取。
mr-zhangyuan
2015-11-16 23:04
@JohnLui:http://maoliduosk.oss-cn-qingdao.aliyuncs.com/imag.jpg?OSSAccessKeyId=Ippi1Ifiky6s12mI&Signature=dOBGUhAwmFhMU1IUngkLkDlPztE%3D&Expires=1447732216
这是我用 echo $oss->getUrl(' ', new DateTime("+1 day"));  从我上传的oss里面获取的url,这个有时间限制吗  是不是一天后失效。   我刷新一下,Signature=dOBGUhAwmFhMU1IUngkLkDlPztE%3D&Expires=1447732216后面的参数就变了,但是用<imag src>显示图片都是完整一样的。
JohnLui
2015-11-17 10:51
@mr-zhangyuan:哥呀,你每次获取的链接都是基于当前时间的呀。。。。
阳仔
2015-10-22 08:43
有没有腾讯云服务
JohnLui
2015-10-22 10:52
@阳仔:木有
朝晖
2015-11-04 10:10
@JohnLui:老师 请问下oss的getObject找不到文件就会报OSSException in OSSExceptionFactory.php line 16:
The specified key does not exist. 这个错 怎么才能判断该文件是否存在
JohnLui
2015-11-04 11:01
@朝晖:就是这个流程呀,用 try catch 捕获异常,进行下一步动作。
初来乍到
2015-06-01 15:56
我照你的样子写完了,可是不知道接下来干什么了
兔子不哭
2015-05-18 18:01
请问一下这里的文件上传 如果是超大附件走的是哪种方法呢
OSS有一个方法是用来处理大文件的
别外上传完成后如果判别成功与否?
求教
这样laravel能否取到header信息?
JohnLui
2015-05-19 10:59
@兔子不哭:每个方法都会返回Bool。大文件上传这功能 PHP SDK 好像没有

发表评论:

© 2011-2017 岁寒  |  Powered by Emlog