JohnLui/AliyunOSS v2.0 发布,大幅优化了 API 易用性,改进了文件结构

2015-1-9   /   字数:2463   /   阅读数:61086   /   分类: PHP     
    ___     __    _                                    ____    _____   _____
   /   |   / /   (_)   __  __  __  __   ____          / __ \  / ___/  / ___/
  / /| |  / /   / /   / / / / / / / /  / __ \        / / / /  \__ \   \__ \
 / ___ | / /   / /   / /_/ / / /_/ /  / / / /       / /_/ /  ___/ /  ___/ /
/_/  |_|/_/   /_/    \__, /  \__,_/  /_/ /_/        \____/  /____/  /____/
                    /____/  

适配 Laravel 7 的新包已经发布:AliyunOSS-Laravel7

AliyunOSS 是阿里云 OSS 官方 SDK 的 Composer 封装,支持任何 PHP 项目,包括 Laravel、Symfony、TinyLara 等等。Github 地址:https://github.com/johnlui/AliyunOSS

更新记录

  • 2017-03-08 Release v2.0.0 v2 发布,在 API 易用性上进行了大量优化

  • 2016-09-12 Release v1.3.5 加入文件元信息的设置功能

  • 2016-07-20 Release v1.3.4 加入文件元信息的获取功能

  • 2016-07-20 Release v1.3.4 加入文件元信息的获取功能

  • 2016-01-31 Release v1.3.2 获取指定虚拟文件夹下的所有文件

  • 2015-10-23 Release v1.3 增加删除、复制、移动文件功能

  • 2015-08-07 Release v1.2 修复内存泄露 bug

  • 2015-01-12 Release v1.1 增加内外网配置分离

  • 2015-01-09 Release v1.0 完善功能,增加 Laravel 框架详细使用教程及代码

安装

安装有两种方式:

① 直接编辑配置文件

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

require: {
    "johnlui/aliyun-oss": "~2.0"
}

然后运行 composer update

② 执行命令安装

运行命令:

composer require johnlui/aliyun-oss:~2.0

使用(以 Laravel 为例)

构建 Service 文件

新建 app/services/OSS.php,内容可参考:OSS.php,然后修改配置:

... ...

  private $city = '青岛';

  // 经典网络 or VPC

  private $networkType = '经典网络';

  private $AccessKeyId = '';

  private $AccessKeySecret = '';

... ...

放入自动加载

遵循 psr-0 的项目(如Laravel 4、CodeIgniter、TinyLara)中:

在 composer.json 中 autoload -> classmap 处增加配置:

"autoload": {
    "classmap": [
      "app/services"
    ]
  }

然后运行 composer dump-autoload。

遵循 psr-4 的项目(如 Laravel 5、Symfony)中:

无需配置,保证目录 App/Services 和命名空间 namespace App\Services; 一致即可自动加载。

使用

use App\Services\OSS;

// 在外网上传一个文件并指定 options 如:Content-Type 类型

// 更多 options 见:https://github.com/johnlui/AliyunOSS/blob/master/src/oss/src/Aliyun/OSS/OSSClient.php#L142-L148

OSS::publicUpload('bucket', '目标 object 名', '本地文件路径', [
    'ContentType' => 'application/pdf',
    ... ...
]);

更多用法等待着你去发现:https://github.com/johnlui/AliyunOSS/blob/master/example/OSS.php

反馈

有问题请在本文下面留言。

License

除 “版权所有(C)阿里云计算有限公司” 的代码文件外,遵循 MIT license 开源。

WRITTEN BY

avatar

评论:

大屁孩
2023-05-26 10:05
大佬安康:
    请问laravel8 php8  上传的时候返回 Invalid handle provided   是啥问题 文件都是正常的 是不是curl请求的问题  guzzle 版本太低导致。 忘大佬帮忙看看 感谢
阿亮
2023-08-16 11:39
@大屁孩:我也是遇到这个问题了 直接返回我Invalid handle provided
XXX
2023-08-17 11:20
@阿亮:你好 我也碰到这个问题了 请问您解决了吗
大屁孩
2022-07-12 17:33
大佬好,上传图片40M的时候 直接504了 过了很久为啥呢有配置吗
远山
2021-06-24 15:30
如何上传图片以后获得已上传图片的链接?
ribbon
2021-06-23 15:31
怎么获得oss直接可以访问的链接,而不是下载
JohnLui
2021-06-23 17:01
@ribbon:需要在上传的时候指定正确的 content-type
哒哒
2021-06-01 17:27
同样php版本配置的两台服务器,代码相同一台可以使用,一台不可用。报错如下,麻烦大神帮忙看看,框架使用的tp5.1,使用的composer拉取的代码,使用oss版本为最新版本2.0,我看这个问题,在楼上评论中也有几个人遇到了,不知道有解决方法没。
[0] ThrowableError in EventDispatcher.php line 48
类型错误: Argument 1 passed to Symfony\Component\EventDispatcher\EventDispatcher::dispatch() must be an object, string given, called in /www/wwwroot/jiaoyou_web/vendor/johnlui/aliyun-oss/src/oss/libs/guzzle/common/Guzzle/Common/AbstractHasDispatcher.php on line 40
    {
        if (__CLASS__ === static::class) {
            $this->optimized = [];
        }
    }

    /**
     * {@inheritdoc}
     */
    public function dispatch(object $event, string $eventName = null): object
    {
        $eventName = $eventName ?? \get_class($event);

        if (null !== $this->optimized) {
            $listeners = $this->optimized[$eventName] ?? (empty($this->listeners[$eventName]) ? [] : $this->optimizeListeners($eventName));
        } else {
            $listeners = $this->getListeners($eventName);
        }

Call Stack
in EventDispatcher.php line 48
at EventDispatcher->dispatch('client.create_reques...', object(Event)) in AbstractHasDispatcher.php line 40
at AbstractHasDispatcher->dispatch('client.create_reques...', ['client' => object(Client), 'request' => object(EntityEnclosingRequest)]) in Client.php line 450
at Client->prepareRequest(object(EntityEnclosingRequest), []) in Client.php line 199
at Client->createRequest('PUT', 'http://test-jiaoyou....', ['Content-Length' => '12227', 'Content-Type' => 'application/octet-st...', 'Date' => 'Tue, 01 Jun 2021 09:...', ...], object(ReadLimitEntityBody)) in HttpServiceClient.php line 119
at HttpServiceClient->buildCoreRequest(object(HttpRequest)) in HttpServiceClient.php line 56
at HttpServiceClient->sendRequest(object(HttpRequest), object(ExecutionContext)) in OpenServiceClient.php line 37
at OpenServiceClient->sendRequest(object(HttpRequest), object(ExecutionContext)) in RetryableServiceClient.php line 32
at RetryableServiceClient->sendRequestImpl(object(HttpRequest), object(ExecutionContext), 0) in RetryableServiceClient.php line 27
at RetryableServiceClient->sendRequest(object(HttpRequest), object(ExecutionContext)) in Command.php line 121
at Command->execute(['Endpoint' => 'http://oss-cn-shenzh...', 'AccessKeyId' => 'LTAIeOopj0aHBw7Y', 'AccessKeySecret' => 'HsdlmsiBVIorEwGTLs1E...'], ['Bucket' => 'test-jiaoyou', 'Key' => 'jiaoyou/jyaaaaaaaaaa...', 'Content' => resource, ...]) in OSSClient.php line 429
at OSSClient->execute('putObject', ['Bucket' => 'test-jiaoyou', 'Key' => 'jiaoyou/jyaaaaaaaaaa...', 'Content' => resource, ...]) in OSSClient.php line 153
at OSSClient->putObject(['Bucket' => 'test-jiaoyou', 'Key' => 'jiaoyou/jyaaaaaaaaaa...', 'Content' => resource, ...]) in AliyunOSS.php line 101
at AliyunOSS->uploadFile('jiaoyou/jyaaaaaaaaaa...', '/www/wwwroot/jiaoyou...', []) in FileLogic.php line 141
at FileLogic::ossUploadFile('/www/wwwroot/jiaoyou...', 'teacher', '', 1, '', []) in FileLogic.php line 96
at FileLogic::uploadLocalFile('/www/wwwroot/jiaoyou...', 'teacher') in Test.php line 99
at Test->upload()
at ReflectionMethod->invokeArgs(object(Test), []) in Container.php line 395
at Container->invokeReflectMethod(object(Test), object(ReflectionMethod), ['s' => '//admin/web.test/upl...']) in Module.php line 131
at Module->think\route\dispatch\{closure}(object(Request), object(Closure), null)
at call_user_func_array(object(Closure), [object(Request), object(Closure), null]) in Middleware.php line 185
at Middleware->think\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Middleware.php line 130
at Middleware->dispatch(object(Request), 'controller') in Module.php line 136
at Module->exec() in Dispatch.php line 168
at Dispatch->run() in App.php line 432
at App->think\{closure}(object(Request), object(Closure), null)
at call_user_func_array(object(Closure), [object(Request), object(Closure), null]) in Middleware.php line 185
at Middleware->think\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Middleware.php line 130
at Middleware->dispatch(object(Request)) in App.php line 435
at App->run() in index.php line 26
潞澪
2021-07-23 16:54
@哒哒:升级成新的laravel7版,  composer require johnlui/aliyun-oss-laravel7:~3.0

2020-12-23 14:43
我想在上传文件的时候就进行图片缩放,怎么做呢?是不是不支持?
我看文档里面是有的 常量OSS_PROCESS  和方法getObject我都没找到
JohnLui
2020-12-23 14:45
@龙:目前不支持图片处理

2020-12-23 14:51
@JohnLui:这个是官方SDk的精简版吗,我看写的是在其基础上封装的啊.感觉这种文件处理还是有必要
JohnLui
2020-12-23 14:53
@龙:这个库发布于 2015 年 1 月,当时官方没有 composer SDK,所以这个库的功能也不太完善。现在官方出了 composer SDK,可以选择用那个。我保持这个库的更新也是为了老用户和我公司自己的需求。

2020-12-23 14:56
@JohnLui:哦哦,明白了.感谢!!! 我这也是老项目,才发现不是官方SDK
wudiyunxing
2020-10-15 16:53
版本低,换成
composer require johnlui/aliyun-oss-laravel7:~3.0
tigerx
2020-09-01 14:35
'Expires' => new \DateTime("+5 minutes")
过期时间是这么设置的么,为什么不生效呢
miralce
2020-08-28 17:23
在加载阿里云图片搜索服务时composer require alibabacloud/imagesearch-20200212 报错
Fatal error: Cannot declare class Symfony\Component\ClassLoader\UniversalClassLoader, because the name is already in use in /home/wwwroot/app/vendor/johnlui/aliyun-oss-laravel7/src/oss/libs/symfony/class-loader/Symfony/Component/ClassLoader/UniversalClassLoader.php on line 61

怎么避免引入文件冲突
puppet
2020-05-21 21:40
博主您好,OSS设置文件的Content-Type(MIME)是否有封装,或者文档说明?感谢
JohnLui
2020-05-22 09:53
@puppet:OSS::publicUpload('bucket', '目标 object 名', '本地文件路径', [
    'ContentType' => 'application/pdf',
    ... ...
]);

仔细看嘛,示例代码就是啊
lihn
2020-04-07 16:50
message: "Argument 1 passed to Symfony\Component\EventDispatcher\EventDispatcher::dispatch() must be an object, string given, called in E:\dahepaio\root\backstage\vendor\johnlui\aliyun-oss\src\oss\libs\guzzle\common\Guzzle\Common\AbstractHasDispatcher.php on line 40"

laravel版本 -- Laravel Framework 7.2.2
its
2020-06-24 15:09
@lihn:我也遇到了跟你同样的问题...
wudiyunxing
2020-10-15 10:52
@lihn:请问如何解决的?
harriswong
2020-01-07 11:45
请问上传的时候怎么设置header呢?putObject方法的第四个参数 $options支持传入数组,我传入['Cache-Control'=>'max-age=1000']为何不生效呢?
M
2020-02-16 18:54
@harriswong:这个太老了,很多方法都没有,很久没更新了
嗷嗷嗷嗷
2019-09-30 09:43
请问 我用 getPublicObjectURL这个方法 传入bucket名称 和一个上传文件返回的ETAG 然后获取 文件访问URL  
返回结果 :"http://phpnb.oss-cn-hongkong.aliyuncs.com/89005FCCF6D9D2126A29CCFF9DAEAC52"
请问 大佬 我是上传的图片 怎么能让他直接显示啊?
小猪猪
2019-08-22 17:10
//oss容器名称
$bucket = '*******‘
我现在的情况是:
我的阿里oss  有一个bucket名为 blog,在blog下面有很多二级或三级目录
当我用这个插件把bucket设置为blog时,图片能正常上传到该目录下
但是我想把图片上传到二级目录,也就是blog/picture等
我试图把bucket名定义为 /blog/picture  运行的时候发现行不通
请帮帮忙~!
大屁孩
2019-03-14 16:49
您好 如何获取上传的时候错误信息呢 现在没有返回任何信息只有false 如何开启debug模式呢
kiki123
2019-01-28 15:04
如果判断文件是否已存在?oss官方方法doesObjectExist在这里似乎没有啊
xue
2019-04-09 15:17
@kiki123:大哥,你是怎么解决这个问题的?
大屁孩
2018-12-20 14:04
站长你好,
        如何获取视频文件的详细信息 这个接口是否有封装呢?
JohnLui
2018-12-20 14:06
@大屁孩:木有
大屁孩
2018-12-20 14:07
@JohnLui:好的谢谢
大伟
2018-08-01 14:26
站长,你好,OSS的删除方法没有返回值,那么我该如何判断删除成功了呢

2018-07-03 13:37
总是报错 请求超时    请求时间大于30s
xfwang
2018-07-02 20:14
大神好,我调用AliyunOSS.php里面的getObjectMeta方法想获取文件的基本信息,但是一直返回The specified key does not exist

这个是什么原因呀,用AliyunOSS.php里面的getUrl方法都能正常获取到图片下载地址呢,求解答呀
komavenn
2018-06-19 13:34
转为二进制图片上传还是报这个错误
晨晨
2018-06-01 11:10
"Too few arguments to function JohnLui\AliyunOSS::boot(), 3 passed in /home/wwwroot/dev.api.miyin.com/app/services/OSS.php on line 25 and exactly 5 expected"
Symfony\Component\Debug\Exception\FatalThrowableError
/vendor/johnlui/aliyun-oss/src/AliyunOSS.php86
86行内容是    public static function boot($city, $networkType, $isInternal, $AccessKeyId, $AccessKeySecret)
  
请问 在app/services/oss.php文件   从您Git上粘贴下来  还有要修改的地方吗?

vendor下的包里 vendor/johnlui/aliyun-oss/src/AliyunOSS.php里还有要  改的地方吗
JohnLui
2018-06-01 11:32
@晨晨:你确定你是粘下来的? https://github.com/johnlui/AliyunOSS/blob/master/example/OSS.php  这个文件第 25 行是空格。
晨晨
2018-05-31 18:56
您好 我 有两个问题
1 . require: "johnlui/aliyun-oss": "~2.0"以后,再composer update , vendor 里并没有aliyun-oss这个文件 夹是正常吗?

新建了app/services/OSS.php文件后,就报错了 说找不到文件中use JohnLui\AliyunOSS\AliyunOSS; 这个类
梦里是谁
2018-05-29 10:57
上传图片没有指定Content-type,导致访问的时候变成自动下载了。于是我修改app/services/oss.php中的upload如下:
public static function upload($ossKey, $filePath)
    {
        $oss = new OSS(self::$internal); // 上传文件使用内网,免流量费
        $oss->ossClient->setBucket(config('alioss.BucketName'));
        $res = $oss->ossClient->uploadFile($ossKey, $filePath, ['ContentType' => mime_content_type($filePath)]);
        return $res;
    }
郭启才
2018-05-07 13:49
大神请教下如何实现大文件上传,我现在用的的是publicDeleteObject这个方法,可是上传大文件服务器就受不了老是报错,我该怎么做求职点
jackysong
2018-03-30 20:04
作者您好!我想请问一下,这个可以将数据存入阿里云以外的类s3 oss中吗?比如我想将数据存入minio中。应该如何修改代码?
melo
2018-03-23 14:45
阿里云的oss是可以创建文件夹的

如何把上传的文件放入指定的文件夹中呢
郭启才
2018-05-07 13:54
@melo:用这段代码就可以了
   //oss容器名称
         $bucket = '*******';
        //oss文件名称
        $object = time().rand(100000,999999).'.mp4';
        //获取文件路径
        $file = $request->file('video');
        $path = $file->getRealPath();
        //获取文件大小
        $size = $file->getClientSize();
        //换算成MB
        $size = $size / 1048576;
        if($size > 2500){
            return back()->with('error','文件过大');
        }
        
        $retuest = OSS::publicUpload($bucket,$object,$path);
李斌
2018-03-16 15:54
在OSS控制台设置了自定义的域名:honsenflagstorage.honsenflag.com
并重写了AliyunOSS


    public function __construct($city, $networkType, $isInternal, $AccessKeyId, $AccessKeySecret)
    {
        $this->city = $city;
        $this->networkType = $networkType;
        $serverAddress = env('ServerAdd'); //在.env文件中定义的为http://honsenflag.com

        $this->ossClient = OSSClient::factory([
            OSSOptions::ENDPOINT => $serverAddress,
            'AccessKeyId'  => $AccessKeyId,
            'AccessKeySecret' => $AccessKeySecret,
        ]);
    }

然后在使用的时候报下面的错误是什么原因啊???
ClientException in HttpServiceClient.php line 93:
[curl] 6: Could not resolve host: honsenflagstorage.honsenflag.com; Unknown error [url] http://honsenflagstorage.honsenflag.com/
郭启才
2018-03-09 19:58
玩什么创建不了bucket这个容器
郭启才
2018-03-08 18:10
大神这个上传的流程是什么样的必须要先从客户端上传到服务器然后在上传到oss吗。能不能直接从客户端上传到oss?求指教
JohnLui
2018-03-08 18:18
@郭启才:阿里云也提供移动端 SDK。建议你去好好读一下阿里云对 OSS 的介绍,里面啥都有。
郭启才
2018-03-07 16:45
大神我的PHP版本7.0的装不进去怎么办啊
JohnLui
2018-03-07 17:00
@郭启才:是你 Laravel 本身的问题。这个库没有任何第三方依赖。
大包子
2018-01-29 18:04
为什么上传之后,给我返回的不是路径啊,这个我怎么上传到数据库啊。。。。
JohnLui
2018-01-29 18:15
@大包子:文件名是上传的时候定义的,URL 直接拼 域名+文件名 就行了。
493019642
2018-02-01 19:20
@JohnLui:@JohnLui ,大神,有没有PHP做后台服务器给APP段返回sts凭证demo?
请问
2018-02-06 11:27
@493019642:回来回复一下。自己写了。
天赐
2018-01-11 18:17
可以直接输出cdn域名的的url吗
JohnLui
2018-01-12 10:15
@天赐:直接用 OSS 域名是可以的,如果要上 CDN 需要在阿里云那里关联 CDN 和 OSS,设置了之后都是 OK 的。其实 OSS 的服务器就挺快的。
小飞侠
2017-12-04 16:43
您好,这个2.0 AliyunOss里面缺少getObject()方法;导致实例$ossClient调用该方法出错。
JohnLui
2017-12-04 17:02
@小飞侠:2.0 和 1.0 API 不兼容,需要更新调用代码
342342
2017-11-30 10:57
ErrorException in AliyunOSS.php line 99: fopen(uploads): failed to open stream: Permission denied
配置好后报的权限问题,这是怎么回事
JohnLui
2017-11-30 11:18
@342342:fopen 出错,目测本地路径的问题
levent
2018-01-11 18:15
@JohnLui:文件大于3M 就出这样的错误。1M 以下的都没问题~
梦醒
2017-11-11 23:07
成功上传之后返回结果:object(Aliyun\OSS\Models\PutObjectResult)#633 (1) {
  ["eTag":"Aliyun\OSS\Models\PutObjectResult":private]=>
  string(32) "D41D8CD98F00B204E9800998ECF8427E"
}
梦醒
2017-11-11 22:47
你好 请问调用 $res = OSS::publicUploadContent($this->bucket, $name, $response);
返回成功还是失败怎么判断啊?
shiba
2017-10-23 12:19
laravel 5.5 不支持   找不到命名空间
JohnLui
2017-10-23 12:24
@shiba:保证 Laravel 10000 都支持。报错了就去解决它呀。
keweila
2017-10-15 22:31
有下载吗
嗷嗷
2017-09-09 15:13
大文件分片上传的没有,还是没找到。。。
暗影
2017-09-07 18:16
老师您好:
我这边接收到的图片是base64的格式,我看到有一个方法publicUploadContent这个是可以用来上传文件变量内容的,但是会给我返回一个错误:The specified object is not valid.
请问这是什么意思
JohnLui
2017-09-08 10:19
@暗影:应该先用 PHP 转成二进制的格式,再上传。这时候至于是直接传变量的值还是写成本地文件再上传就随意啦,建议写成本地文件,这样 OSS 挂掉的关键时刻可以用自己服务器顶上。
Thanos
2017-08-31 14:13
我是5.1的版本,安装包的时候出现  - laravel/laravel v5.2.15 requires laravel/framework 5.2.* -> satisfiable by laravel/framework[5.2.41, 5.2.x-dev, v5.2.0, v5.2.0-beta1, v5.2.1, v5.2.10, v5.2.11, v5.2.12, v5.2.13, v5.2.14, v5.2.15, v5.2.16, v5.2.17, v5.2.18, v5.2.19, v5.2.2, v5.2.20, v5.2.21, v5.2.22, v5.2.23, v5.2.24, v5.2.25, v5.2.26, v5.2.27, v5.2.28, v5.2.29, v5.2.3, v5.2.30, v5.2.31, v5.2.32, v5.2.33, v5.2.34, v5.2.35, v5.2.36, v5.2.37, v5.2.38, v5.2.39, v5.2.4, v5.2.40, v5.2.42, v5.2.43, v5.2.44, v5.2.45, v5.2.5, v5.2.6, v5.2.7, v5.2.8, v5.2.9] but these conflict with your requirements or minimum-stability.
    - laravel/laravel v5.2.0 requires laravel/framework 5.2.* -> satisfiable by laravel/framework[5.2.41, 5.2.x-dev, v5.2.0, v5.2.0-beta1, v5.2.1, v5.2.10, v5.2.11, v5.2.12, v5.2.13, v5.2.14, v5.2.15, v5.2.16, v5.2.17, v5.2.18, v5.2.19, v5.2.2, v5.2.20, v5.2.21, v5.2.22, v5.2.23, v5.2.24, v5.2.25, v5.2.26, v5.2.27, v5.2.28, v5.2.29, v5.2.3, v5.2.30, v5.2.31, v5.2.32, v5.2.33, v5.2.34, v5.2.35, v5.2.36, v5.2.37, v5.2.38, v5.2.39, v5.2.4, v5.2.40, v5.2.42, v5.2.43, v5.2.44, v5.2.45, v5.2.5, v5.2.6, v5.2.7, v5.2.8, v5.2.9] but these conflict with your requirements or minimum-stability.
    - Installation request for laravel/laravel No version set (parsed as 1.0.0) -> satisfiable by laravel/laravel[No version set (parsed as 1.0.0)].
    - overtrue/laravel-follow 1.0 requires laravel/laravel ^5.1 -> satisfiable by laravel/laravel[v5.1.0, v5.1.1, v5.1.11, v5.1.3, v5.1.33, v5.1.4, v5.2.0, v5.2.15, v5.2.23, v5.2.24, v5.2.27, v5.2.29, v5.2.31, v5.3.0, v5.3.10, v5.3.16, v5.3.30, v5.4.0, v5.4.15, v5.4.16, v5.4.19, v5.4.21, v5.4.23, v5.4.3, v5.4.30, v5.4.9, v5.5.0].
    - Can only install one of: laravel/laravel[v5.1.0, No version set (parsed as 1.0.0)].
    - Can only install one of: laravel/laravel[v5.1.1, No version set (parsed as 1.0.0)].
    - Can only install one of: laravel/laravel[v5.1.11, No version set (parsed as 1.0.0)].
    - Can only install one of: laravel/laravel[v5.1.3, No version set (parsed as 1.0.0)].
    - Can only install one of: laravel/laravel[v5.1.33, No version set (parsed as 1.0.0)].
    - Can only install one of: laravel/laravel[v5.1.4, No version set (parsed as 1.0.0)].
    - Installation request for overtrue/laravel-follow 1.0 -> satisfiable by overtrue/laravel-follow[1.0].

是不支持5.1的吗?
郭启才
2018-03-07 16:51
@Thanos:我php版本7.0  laravel版本5.1跟你一样装不进去求楼主指教下
赵山河
2017-07-27 19:15
这个本地地址怎么取,可以传电脑本地的文件吗
地球你好
2017-07-14 15:21
JohnLui你好,阿里云出新的SDK啦, 支持图片处理。
options = array(
    OssClient::OSS_PROCESS => "image/resize,m_lfit,h_100,w_100" );
$signedUrl = $ossClient->signUrl($bucket, $object, $timeout, "GET", $options);

JohnLui 老师啥时候更新一下
JohnLui
2017-07-14 15:23
@地球你好:你可以暂时两个都用嘛,用这个上传,用那个处理图片。。。
杰夫
2017-07-07 19:42
一个前端的疑惑。
当前我上传文件是前端ajax传递到控制器的(文件可能偏大),所以前端就有上传进度展示的需求了。

所以我的问题是:怎么去获取文件当前上传到OSS的进度呢?
狂野之心
2017-07-03 18:17
你好,我使用了johnlui/aliyun-oss 2.0
调用之后报
OSSException in OSSExceptionFactory.php line 16:
The specified object is not valid.

in OSSExceptionFactory.php line 16
at OSSExceptionFactory->createFromError(object(OSSError)) in OSSErrorResponseHandler.php line 29
at OSSErrorResponseHandler->handle(object(HttpResponse)) in OpenServiceClient.php line 40
at OpenServiceClient->sendRequest(object(HttpRequest), object(ExecutionContext)) in RetryableServiceClient.php line 32
at RetryableServiceClient->sendRequestImpl(object(HttpRequest), object(ExecutionContext), 0) in RetryableServiceClient.php line 27
at RetryableServiceClient->sendRequest(object(HttpRequest), object(ExecutionContext)) in Command.php line 121
at Command->execute(array('Endpoint' => 'http://oss-cn-qingdao.aliyuncs.com', 'AccessKeyId' => 'xxx', 'AccessKeySecret' => 'xxx'), array('Bucket' => 'xxx', 'Key' => '/ld/dn/1/2017-07-03/ceb8f4d00356cf6b27da38827bc0e784.jpg', 'Content' => resource, 'ContentLength' => 30225)) in OSSClient.php line 429
at OSSClient->execute('putObject', array('Bucket' => 'xxx', 'Key' => '/ld/dn/1/2017-07-03/ceb8f4d00356cf6b27da38827bc0e784.jpg', 'Content' => resource, 'ContentLength' => 30225)) in OSSClient.php line 153
at OSSClient->putObject(array('Bucket' => 'xxx', 'Key' => '/ld/dn/1/2017-07-03/ceb8f4d00356cf6b27da38827bc0e784.jpg', 'Content' => resource, 'ContentLength' => 30225)) in AliyunOSS.php line 105
at AliyunOSS->uploadFile('/ld/dn/1/2017-07-03/ceb8f4d00356cf6b27da38827bc0e784.jpg', 'E:\\Visual-NMP-x64\\tmp\\php25B1.tmp', array()) in OSSRepository.php line 53
at OSS::publicUpload('xxx', '/ld/dn/1/2017-07-03/ceb8f4d00356cf6b27da38827bc0e784.jpg', 'E:\\Visual-NMP-x64\\tmp\\php25B1.tmp') in UploaderController.php line 52

该如何解决呢。。。
JohnLui
2017-07-04 10:39
@狂野之心:"The specified object is not valid."

just translate it
Avatar911
2018-03-20 13:48
@狂野之心:key 不能以 / 开头
0202
2017-06-29 14:48
设置了自定义域名之后好像不能上传  
The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.
JohnLui
2017-06-29 15:00
@0202:自定义域名这是用于访问的呀。。。上传当然要用它提供的域名。。。
0202
2017-06-29 15:29
@JohnLui:不好意思  是测试环境是存储区域跟之前不一样了~~
JohnLui
2017-06-29 15:31
@0202:不过还是建议用它提供的域名,DNS解析也是需要时间的。。。
火鸡2017
2017-06-23 15:45
有MD5验证上传吗,找不到到相关参数设置;
chengzige
2017-06-13 21:17
上传的时候提示
ClientException in HttpServiceClient.php line 93:
[curl] 7: Failed to connect to chengzige.oss-cn-shanghai-internal.aliyuncs.com port 80: Timed out [url] http://chengzige.oss-cn-shanghai-internal.aliyuncs.com/79Z1qv3WdG.jpg

这是怎么回事啊
JohnLui
2017-06-14 11:48
@chengzige:配置是内网,实际服务器不在阿里云上海区域?如果不在,只能使用公网配置。
James
2017-11-13 09:32
@JohnLui:我也是这个问题。区域是在同一个的
董咚懂咚
2017-03-29 18:47
OSS::getAllObjectKey($bucketName);
只读取了100条数据,怎样全部读取呢?
拉风的男人
2017-03-21 13:32
表单有必要用组件么
MikuSama
2017-03-14 11:33
博主你好,不知道这个能不能应用在chevereto这个图床程序上,因为那个程序是国外的,支持的上传方式只有AWS S3,Google Cloud,还有SFTP,STP(这两个都是要经过本地服务器,这样会极大的影响上传时间),所以我想用国内的oss。
Joey
2017-03-06 19:06
Token error   上传以后在阿里云服务器上显示。
MJIC
2017-02-08 19:34
在Lumen下使用报错
The request signature we calculated does not match the signature you provided. Check your key and signing method.

检查了半天,accesskeyid、accesskeysecret、bucket和endpoint都确认是没错的
不知道是哪里出了问题?
tairy
2017-01-11 23:02
为啥我用这个包上传到阿里云的图片做了cdn加速无法访问,我直接在阿里云的后台上传的图片是可以用cdn加速域名访问的。
JohnLui
2017-01-12 10:07
@tairy:因为设置为私有了?
tairy
2017-01-12 10:41
@JohnLui:感谢回复,找到原因了,是因为我上传的时候没有设置 content type 导致传到阿里云的图片的 content type 是默认的 application/octet-stream,在调用 upload 函数的时候加上 content type 就可以了。

```
OSS::upload($avatar, storage_path('app/' . $avatar), [
            'ContentType' => mime_content_type(storage_path('app/' . $avatar)),
            'ContentDisposition' => 'inline'
        ]);
```

另外楼主提供的示例中 https://github.com/johnlui/AliyunOSS/blob/master/OSSExample.php#L23 的 upload 函数并没有接受 option 参数的形参,传了参数 $option 数组之后虽然没有报错,但是上传的图片并没有设置contenttype, 后来自己手动加上之后才可以。
JohnLui
2017-03-08 21:25
@tairy:v2 发布了,大幅优化了 API 易用性,可以试试啦
tairy
2017-03-10 12:25
@JohnLui:好的,非常感谢!
Destiny
2016-12-26 11:45
博主你好,你的这个组件更新了之后,在 GitHub 上面的文档还没有更新呢,比如使用方法,我发现有一些维护中把一些如:设置 content-type 类型的方法也 pr 了但是使用方法文档却没有更新。
JohnLui
2016-12-26 11:55
@Destiny:感谢反馈~
欢迎贡献呦,在 Github 上就可以
Destiny
2016-12-26 21:10
@JohnLui:嗯,已更新。
Echo
2016-11-17 11:34
<?php

namespace App\Services;

use JohnLui\AliyunOSS\AliyunOSS;

use Config;

class OSS {

    private $ossClient;

    public function __construct($isInternal = false)
    {
        $serverAddress = $isInternal ? Config::get('app.ossServerInternal') : Config::get('app.ossServer');
        $this->ossClient = AliyunOSS::boot(
            $serverAddress,
            Config::get('app.AccessKeyId'),
            Config::get('app.AccessKeySecret')
        );
    }

use config显示undefined class config ,然后运行的话会报一下错误
InvalidArgumentException in AssertUtils.php line 55:
Key [Endpoint] was not set.
in AssertUtils.php line 55
at AssertUtils::assertSet(array('Endpoint', 'AccessKeyId', 'AccessKeySecret'), array('MaxErrorRetry' => '3', 'UserAgent' => 'aliyun-sdk-php/2.0.0-beta', 'CurlOptions' => array(), 'Endpoint' => null, 'AccessKeyId' => null, 'AccessKeySecret' => null)) in OSSClient.php line 399
at OSSClient->__construct(array('Endpoint' => null, 'AccessKeyId' => null, 'AccessKeySecret' => null)) in OSSClient.php line 54
at OSSClient::factory(array('Endpoint' => null, 'AccessKeyId' => null, 'AccessKeySecret' => null)) in AliyunOSS.php line 24
at AliyunOSS->__construct(null, null, null) in AliyunOSS.php line 29
at AliyunOSS::boot(null, null, null) in OSS.php line 20
JohnLui
2016-11-17 11:52
@Echo:去 Github 看看啦,这篇文章好久没更新了
HYB
2016-10-08 12:14
laravel 集成oss,删除文件 返回空, 结果没有删除。
oss::deleteObject();
deleteObject 这里面是访问路径还是上传路径?
寒素湘
2016-09-06 16:21
我怎么知道我上传文件是否成功呢?没有返回值和错误代码。

2016-10-25 18:52
@寒素湘:就是啊  没有返回错误
ginnerpeace
2016-08-30 16:10
您好,我请教一下。
目前1.3版本的包使用或者借鉴了官方的包了吗? aliyuncs/oss-sdk-php,如果有的话,是哪个版本呢?
罗彦
2016-07-29 00:24
作者你好我解决了,   在这里我给一些和我遇到问题的朋友解决一下,,,,遇到错误:The specified bucket is not valid.  的朋友   我在里我给你们解释一下 你们的内外地址肯定是给了http://****.oss-cn-beijing.aliyuncs.com 这里的*是指bucket名字,  然后你们调用方法的时候有传入了一个bucket的名字, 然后它给你们拼接起来 就变成了http://bucketName.bucketName.oss-cn..........com     解决方案:在配置文件里面ALIOSS_SERVER=http://oss-cn-beijing.aliyuncs.com   比如这个外网地址前面不要加上 bucket名字
回复
2016-11-03 11:44
@罗彦:好!
回复
2016-11-03 11:44
@罗彦:就是这个原因!太好了!
用户
2016-07-29 00:01
The specified bucket is not valid. 一直都是这个问题??????一点都没改动就的拉下来的, 配置都能读取到, 就是不行.:-(
用户
2016-07-28 23:01
作者你好, 请问我直接DD OSS类的构造方法里面的$ossClient, 我官输入正确的key还是错误的key返回数据里面的bucket 都是null请问这是咋回事?怎么验证我是否成功连接了OSS
supermanrocky
2016-07-10 21:36
请问怎么获取bucket下的某个文件夹内容呢? OSS::getAllObjectKey('talentlib/icon') 这个会报错,不能输入/
JohnLui
2016-07-11 00:17
@supermanrocky:OSS 这类单文件云存储,是没有所谓“文件夹”的概念的,所有文件都有一个唯一的 key 作为名称才可以被检索。这里的文件夹只是个 trick,所以自然就没有所谓获取文件夹下所有文件的方法。这只是个工具包,在寻找某项功能之前请先去 OSS 官方 SDK 里找找有没有这条 api。
supermanrocky
2016-07-08 20:19
[curl] 7: Failed to connect to talentlib.oss-us-west-1-internal.aliyuncs.com port 80:Timed out [url] https://talentlib.oss-us-west-1-internal.aliyuncs.com/ipaustralia.pdf

请问这个问题是怎么解决呢?我的endpoint都设置好了。upload出的问题,getBucket没问题的。求教。我用的是laravel 5.2。多谢!
JohnLui
2016-07-08 21:01
@supermanrocky:应该是 OSS 那边的权限设置问题?
supermanrocky
2016-07-08 23:27
@JohnLui:我解决了,我是把$oss = new OSS(false); 改成false用外网传的。不知道为什么内网不能用?!~外网就能上传了。
JohnLui
2016-07-08 23:29
@supermanrocky:OSS内网ip可能需要白名单?
supermanrocky
2016-07-10 21:23
@JohnLui:请问这个能不能获取bucket下某个文件夹的内容?OSS::getAllObjectKey('talentlib/abc')这个会报错。不能在bucket后加/
孤狼
2016-06-16 18:05
这个 SDK, 支持创建目录吗?或者 再说上传文件是自动创建目录
j955
2016-05-23 17:01
ClientException in Command.php line 135:
The scheme of endpoint is not set.

遇到了同样的问题,但外网地址什么的都设置了.dump出来查看也是有外网地址的.不知道什么原因望指教
阿德
2016-05-17 20:49
按照的自己的情况重新写了命名空间 之后提示安装curl 安装了curl 然后提示成功! 哈哈 谢谢老大的扩展包
阿德
2016-05-17 18:36
忘了说 我的laravel5.2.29
阿德
2016-05-17 18:35
已经声明了 use App\Services\OSS;
还是提示 Class 'App\Services\OSS' not found...
JohnLui
2016-05-17 18:43
@阿德:目测是命名空间用法错误
阿德
2016-05-17 19:00
@JohnLui:那我重新复习下 命名空间 。。
SKY
2017-12-27 01:22
@阿德:你好,请问你的问题解决了吗?我也遇到了同样的问题,本地测试没问题,放到服务器就不行了
geta_chan
2016-05-10 17:16
哥,yii2怎么用啊
kailuo99
2016-03-21 23:33
你好:

我使用的是Laravel5.2 ,用了您的包以后,使用OSS出现

ClientException in Command.php line 135:
Undefined index: host

这个如何解决?
waken
2016-04-13 11:05
@kailuo99:你用的是内网访问
OSS.php总
$oss = new OSS(); // 上传文件使用内网,免流量费

这样定义就可以啦
Panfen
2016-04-18 14:55
@waken:你的意思是:$oss = new OSS(true) 改成 $oss = new OSS() ? 还是报同样的错
JohnLui
2016-04-18 15:15
@kailuo99:这个问题已经有了解决方案:https://github.com/johnlui/AliyunOSS/issues/9
Panfen
2016-04-18 15:18
@JohnLui:感谢您的及时回复,出现一个新的问题:OSSException in OSSExceptionFactory.php line 16:
AccessDenied,希望您能继续解答一下,form a laravel新手
lee
2016-03-17 17:26
libs目录下的guzzle ,有composer包,为什么作为自己的项目文件加入到项目中呢?
JohnLui
2016-03-17 17:28
@lee:SDK 需要的是绝对可用,版本更新就相当于依赖了别人,别人的错误会弄死自己。
acmagic
2016-01-29 16:35
我申请了一个pull request,麻烦reivew一下。多谢
micheal
2015-12-04 17:53
AliyunOSS好像可以生成图片的缩略图吧?现在还不可以生成么?
董咚懂咚
2015-11-27 18:05
【阿里云】您正在使用的OSS Java SDK 2.0.6版本SetObjectAcl接口存在已知Bug,建议您尽快更换SDK版本。详情:http://tb.cn/CEbuNhx

请问JohnLui/AliyunOSS会更新并升级吗?
JohnLui
2015-11-27 23:38
@董咚懂咚:哥,人家是 java SDK 的 bug。。。。。。。。。。
debuglee
2015-11-25 14:52
Laravel 5.1 无法定制host

ClientException in Command.php line 135:
Undefined index: host
waken
2015-12-05 15:41
@debuglee:我也碰到这个问题了,怎么解决呢?
webshiyue
2015-12-31 18:58
@debuglee:同问,无法定义的 host 索引
jecky
2015-11-23 16:20
Aliyun\OSS\Exceptions\OSSException

The specified bucket is not valid.


yii2 配置一样出现这个情况,怎么回事呢?
oGre
2015-11-19 11:20
你好,我想问下怎么建立一个文件夹?
JohnLui
2015-11-19 12:05
@oGre:OSS 没有文件夹的概念,是 key-file 存储,你可以加上前缀假装文件夹。
阿旭
2015-11-16 09:27
我在上传一个大文件时,大概150M,会抛出异常
Maximum execution time of 30 seconds exceeded

我想可能是超时了,有没有配置项可以设置超时的时间
JohnLui
2015-11-16 09:31
@阿旭:修改 PHP 配置就行。
骑车一公里
2015-10-28 15:45
配置AliyunOSS出现如下错误:
InvalidArgumentException in AssertUtils.php line 55:
Key [Endpoint] was not set.

1. in AssertUtils.php line 55
2. at AssertUtils::assertSet(array('Endpoint', 'AccessKeyId', 'AccessKeySecret'), array('MaxErrorRetry' => '3', 'UserAgent' => 'aliyun-sdk-php/2.0.0-beta', 'CurlOptions' => array(), 'Endpoint' => null, 'AccessKeyId' => null, 'AccessKeySecret' => null)) in OSSClient.php line 399

配置如下:

        'ossServer' => 'http://oss-cn-beijing.aliyuncs.com', //青岛为 http://oss-cn-qingdao.aliyuncs.com
    'ossServerInternal' => 'http://oss-cn-beijing-internal.aliyuncs.com', //青岛为 http://oss-cn-qingdao-internal.aliyuncs.com
    'AccessKeyId' => 'SEi7HOeAkFGAg2gl',
    'AccessKeySecret' => 'r7zdnBMjGwxqU90DDDlYqW3UT2AX9X',
        'timezone' => 'Asia/Shanghai',

目测配置没什么不对的,能帮我看一下吗?
JohnLui
2015-10-28 17:14
@骑车一公里:调用了什么方法?注意 OSSExample 中有不少地方需要你手动修改的。
骑车一公里
2015-10-28 18:59
@JohnLui:试过createBucket, getAllObjectKey都是这种错误,

刚刚又去https://github.com/johnlui/AliyunOSS/blob/master/OSSExample.php更新了一下,OSSExample也重修改过了,还是这样的。

另外, 'ossServer' , 'ossServerInternal','AccessKeyId', 'AccessKeySecret' 的配置与'timezone'配置在同一层次的。
JohnLui
2015-10-29 00:28
@骑车一公里:bucket名称改成你的了没
骑车一公里
2015-10-29 09:54
@JohnLui:凡是有
“$oss->ossClient->setBucket('你的 bucket 名称');”
提示的地方都改了。
JohnLui
2015-10-29 10:51
@骑车一公里:对了,注意看每个函数里面对 OSS 类是初始化代码:
$oss = new OSS(true);
这是选择采用内网传输。如果你都是外网使用,可以改成false或者不传参数。
骑车一公里
2015-10-29 13:07
@JohnLui:都试过了,然而没什么改变,会不会是我在config/app.php添加配置的'ossServer' , 'ossServerInternal','AccessKeyId', 'AccessKeySecret' 层次不对?
JohnLui
2015-10-29 13:22
@骑车一公里:试着打印 Config::get('app.ossServer') 看看正不正确。
骑车一公里
2015-10-29 16:10
@JohnLui:控制器中use Config;后,打印Config::get('app.ossServer') 为NULL。
然后尝试OSS::getAllObjectKey('×××')仍旧报错“Key [Endpoint] was not set.”
JohnLui
2015-10-29 16:19
@骑车一公里:为 null 就是配置错了,可能你给加了一层。。。
骑车一公里
2015-10-29 17:02
@JohnLui:目前就是下面这样的了,添加的配置跟timezone, url都是同一层的

======================= 我是分割线 ===========================

    'url' => 'http://localhost',

    /*
    |--------------------------------------------------------------------------
    | Application Timezone
    |--------------------------------------------------------------------------
    |
    | Here you may specify the default timezone for your application, which
    | will be used by the PHP date and date-time functions. We have gone
    | ahead and set this to a sensible default for you out of the box.
    |
    */

    'timezone' => 'Asia/Shanghai',


    'ossServer' => 'http://oss-cn-beijing.aliyuncs.com', //青岛为 http://oss-cn-qingdao.aliyuncs.com
    'ossServerInternal' => 'http://oss-cn-beijing-internal.aliyuncs.com', //青岛为 http://oss-cn-qingdao-internal.aliyuncs.com
    'AccessKeyId' => 'SEi7HOeAkFGAg2gl',
    'AccessKeySecret' => 'r7zdnBMjGwxqU90DDDlYqW3UT2AX9X',
JohnLui
2015-10-29 17:46
@骑车一公里:就是配置的问题,你再查查吧。
你用的版本是5么?Laravel 4 的话,会有多个 app.php 文件的。
你再看下前面有没有使用过 Config::set() 之类的。
骑车一公里
2015-10-29 17:59
@JohnLui:用的版本5,那我再查查吧
骑车一公里
2015-10-29 19:34
@JohnLui:执行php artisan config:cache后,tinker可以正确读出配置了。php artisan cache:clear都执行过了但是控制器里还是不行,是不是存在启用了某些缓存设置的可能?
骑车一公里
2015-10-30 10:00
@JohnLui:天了噜,重新下载了框架,把文件挪进去就没问题了。
是我的错
notech
2015-08-30 23:36
用你的封装,在 put object的时候 怎么设置content-type属性?
测试
2015-08-19 10:24
每次上传都要先上传到服务器 ,然后在从服务器上传都oss 。能直接上传到oss吗
JohnLui
2015-10-23 11:18
@测试:可以啊,阿里云提供了安卓和 iOS 的 SDK。iOS SDK:https://docs.aliyun.com/?spm=5176.383663.9.7.WhuzGU#/pub/oss/sdk/sdk-download&ios
fix丶ed
2015-08-14 13:59
您好,oss 图片删除和移动方法怎么实现呢?
JohnLui
2015-10-23 11:18
@fix丶ed:已经发布 1.3 版,加上了增加删除、复制、移动文件的功能
fix丶ed
2015-08-13 18:25
  OSS::bucket('1hooo')->move('temps/' . $tempImage->name, 'stores/' . $tempImage->name);
有没有移动和 删除方法? 比如我有多个bucket  能有方法进入某个buchket不?????
xiaoyin199
2015-07-30 09:28
return $oss->ossClient->getUrl($ossKey, new \DateTime("+1 day")); 这里获取回来的图片有个过期时间,而且这个参数必须填写。我在富文本编辑器中应用了,例如百度编辑器图片上传,应用了oss图片存在云端了,但是返回的连接相当于有过期时间的,目前是一天。编辑器保存的可是具体的链接,所以一天后就失效了,怎么处理。
JohnLui
2015-07-30 17:01
@xiaoyin199:过期时间可以设置,你可以设置为 int 最大值,在 2037 年 ~
无名
2015-07-22 14:12
laravel5.1的怎么使用 方法一样吗
JohnLui
2015-07-22 14:18
@无名:一样
小女子
2015-07-06 11:10
你好,请教一下,这个在CI。3 里面怎么使用呢?
CI。3 不支持命名空间?
JohnLui
2015-07-06 11:12
@小女子:是支持的, 直接引入包就行。
小寒
2015-06-27 16:29
我改了OSSUtils类的
    public static function buildResourcePath($key) {
        return empty($key) ? '/' : '/'.$key;
    }
这个方法,把$key的url序列化去了,上传的$key可以指定目录了。当然,services里面的oss,的上传路径最好是检查下是否为绝对路径,如果是绝对路径把前面的'/'去了,因为这方法里面会自动增加。
Frank
2015-06-23 10:35
hi,有个疑惑问下
看了下这个包的实现,oss/src/Aliyun目录下的源文件中,显示的是
2       /**
3     * Copyright (C) Alibaba Cloud Computing
4     * All rights reserved.
5     *
6     * 版权所有 (C)阿里云计算有限公司
7     */
但是翻了下官方文档  http://docs.aliyun.com/?spm=5176.383663.9.2.Wdtb0x#/pub/oss/sdk/sdk-download&php
提供的sdk与 johnlui/AliyunOSS 中封装的方式完全不一样呀

oss/src/Aliyun下的源文件是自己开发的还是 从哪里Get到的?

多谢:)

2015-07-27 15:11
@Frank:hi,
@JohnLui
你好,我也有相同的疑问

想知道你的源文件是从哪里Get到的?

多谢:)
JohnLui
2015-10-23 11:20
@二:是之前阿里云分发的 v2 版的 SDK。
JohnLui
2015-10-23 11:19
@Frank:是之前阿里云分发的 v2 版的 SDK。
Tester
2015-06-03 13:14
报错:
The specified bucket is not valid.

所有参数都没问题,bucket名称也100%没写错,因为是复制过去的
JohnLui
2015-06-03 13:21
@Tester:可能是key的问题?
Tester
2015-06-03 13:26
@JohnLui:肯定不是,我又创建了新的key 也不行
Tester
2015-06-03 13:29
@JohnLui:报错地址:
OSSException in OSSExceptionFactory.php line 16:
The specified bucket is not valid.
JohnLui
2015-06-03 13:32
@Tester:那就不知道了,要不你试一下 v1 版的 SDK,看可不可以。
Tester
2015-06-03 13:39
@JohnLui:抱歉,刚才去调试了一下,发现我在配置文件里面的配置 直接就写成http://bucket_name.oss-cn-shenzhen.aliyuncs.com了,然后在调用的时候 再写一次bucket_name , 地址就成了 bucket_name.bucket_name.oss-cn-shenzhen.aliyuncs.com

谢谢,省了我不少时间
温柔的大海
2015-05-22 10:18
在laravel5下报错array_first找不到
JohnLui
2015-05-22 11:32
@温柔的大海:这个项目里没有 array_first 这串字符
smilezoo
2015-05-13 18:01
Notice: Undefined index: host in /Users/sluin/Downloads/AliyunOSS-master/oss/src/Aliyun/OSS/Utilities/OSSUtils.php on line 110
PHP Fatal error:  Uncaught exception 'InvalidArgumentException' with message 'The scheme of endpoint is not set.' in /Users/sluin/Downloads/AliyunOSS-master/oss/src/Aliyun/Common/Communication/HttpRequest.php:76


code:

<?php
require_once('./OSS.php');
    OSS::upload('zheshiyigetest', '/Users/sluin/Downloads/AliyunOSS-master/test.png');
?>

报错看不太懂....不知道怎么修改
JohnLui
2015-05-13 18:35
@smilezoo:目测配置错误
smilezoo
2015-05-14 15:54
@JohnLui:问题解决了 ,有个小问题 , 设置了时区 ,不然还是会报错 . date_default_timezone_set('Asia/Shanghai');
问题所在是因为粗心 ,地址前面没有加 http://   另外在文件前面 引入其他文件 就不会报错了 .
JohnLui
2015-05-14 16:02
@smilezoo:设置时区是框架要干的事
smilezoo
2015-05-13 11:49
hi , 我刚刚开始学php可能提的问题有些傻 .

example中  use JohnLui\AliyunOSS\AliyunOSS; 这里  是两个AliyunOSS 吗 ?  我在另一个文件中只看到 namespace了一个JohnLui\AliyunOSS .
另外 , 刚学我都没有科普,不知道怎么用框架, 是不是要自己写一个Config类 ? 因为没有找到这个在哪里声明过 .谢谢了 .
JohnLui
2015-05-13 12:22
@smilezoo:你需要看一下我的 PHP 命名空间 解惑 ~
laravel
2015-05-07 10:36
laravel分页报错:ErrorException in compiled.php line 5144: call_user_func_array() expects parameter 1 to be a valid callback, class 'Illuminate\Support\Collection' does not have a method 'links' (View: D:\learnlaravel5\resources\views\Admin\Ljd\index.blade.php)
JohnLui
2015-05-07 11:05
@laravel:天地良心,这错误跟这个包真没关系
laravel
2015-05-07 11:06
@JohnLui:那我怎么分页呢
阿旭
2015-02-11 21:13
{"error":{"type":"Symfony\\Component\\Debug\\Exception\\FatalErrorException","me
ssage":"Class 'Aliyun\\OSS\\OSSClient' not found","file":"E:\\work\\php\\Apache2
4\\htdocs\\shop\\app\\controllers\\OSS.php","line":13}}


我也查看了vendor/composer
/vendor/composer/autoload_psr4.php 中有 'JohnLui\\AliyunOSS\\' => array($vendorDir . '/johnlui/aliyun-oss'), 这样行
JohnLui
2015-02-12 19:40
@阿旭:是 symfony 还是 Laravel ?
呆子
2015-02-09 15:39
搞定了,改了很多地方,但是我没时间去确定到底是哪里出了问题。
等搞定功能了,再去最后确定是哪里的配置问题。
阿旭
2015-02-11 21:14
@呆子:你好我也遇到类似的问题,不知道什么原因,能帮帮我吗?
呆子
2015-02-06 09:14
你好,不知道为什么,symfony中作为vendor总是添加不进去。
1. config.json 中我添加了require和classmap
2. 执行了composer update 和 composer dump-autoload
3. 之后查看了配置文件,信息都是正确的。

但是总是提示":Class 'JohnLui\AliyunOSS\AliyunOSS' not found
JohnLui
2015-02-06 10:45
@呆子:应该就是包安装的问题。你看看 /vendor/composer/autoload_psr4.php 中是否有 'JohnLui\\AliyunOSS\\' => array($vendorDir . '/johnlui/aliyun-oss'), 这样一行?
呆子
2015-02-06 19:39
@JohnLui:这一行确实没有,我手动添加后,仍然有错误,错误信息变为:
Cannot redeclare class JohnLui\AliyunOSS\AliyunOSS
JohnLui
2015-02-09 12:39
@呆子:搞定了没。。。再搞不定的话我要装一个 symfony 试一下了。。。。
呆子
2015-02-09 16:05
@JohnLui:之所以用 symfony是因为用edusoho这个开源的在线教育平台,在后台直接把视频上传到阿里云OSS上去。不存储在本地,也不使用官方的云服务。
AlleSong
2018-01-05 11:37
@JohnLui:请问下这个问题怎么解决啊?我也发生了同样的问题。
JohnLui
2018-01-05 13:53
@AlleSong:经过我的测试,Symfony 完全没问题,可以使用,只是需要修改几处命名空间。稍后我会修改 readme 加入 symfony 用法。建议先理解命名空间,不然以后寸步难行,具体可以参考本站文章。

发表评论:

© 2011-2024 岁寒  |  Powered by Emlog