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

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

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

评论:

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-2019 岁寒  |  Powered by Emlog