All Projects → zgldh → qiniu-laravel-storage

zgldh / qiniu-laravel-storage

Licence: MIT license
Qiniu 云储存 Laravel 5 Storage版

Projects that are alternatives of or similar to qiniu-laravel-storage

Xblock Kernel
XBlock - 开发文档
Stars: ✭ 127 (-75.58%)
Mutual labels:  lumen
Laravel Http2 Server Push
A middleware package for Laravel to enable server push for your script, style, and image assets.
Stars: ✭ 174 (-66.54%)
Mutual labels:  lumen
Lumen Api Starter
Lumen 8 基础上扩展出的API 启动项目,精心设计的目录结构,规范统一的响应数据格式,Repository 模式架构的最佳实践。
Stars: ✭ 197 (-62.12%)
Mutual labels:  lumen
Laravel Pug
Pug view adapter for Laravel and Lumen
Stars: ✭ 130 (-75%)
Mutual labels:  lumen
Laravel Awesome
Laravel 学习图谱
Stars: ✭ 143 (-72.5%)
Mutual labels:  lumen
Laravel Auditing
Record the change log from models in Laravel
Stars: ✭ 2,210 (+325%)
Mutual labels:  lumen
Lumen Route List
Lumen Route List
Stars: ✭ 108 (-79.23%)
Mutual labels:  lumen
Lumen
An alternative BEAM implementation, designed for WebAssembly
Stars: ✭ 2,742 (+427.31%)
Mutual labels:  lumen
Forrest
A Laravel library for Salesforce
Stars: ✭ 171 (-67.12%)
Mutual labels:  lumen
Seotools
SEO Tools for Laravel
Stars: ✭ 2,406 (+362.69%)
Mutual labels:  lumen
Toastr
👀 toastr.js notifications for Laravel 5 and Lumen
Stars: ✭ 133 (-74.42%)
Mutual labels:  lumen
Laravel Fractal
An easy to use Fractal wrapper built for Laravel and Lumen applications
Stars: ✭ 1,748 (+236.15%)
Mutual labels:  lumen
Lumen Microservice
Lumen on Docker - Skeleton project with Nginx, MySQL & PHP 7 | Aws ECS, Google Kubernates, Azure Container Engine
Stars: ✭ 183 (-64.81%)
Mutual labels:  lumen
Vim Laravel
Vim support for Laravel/Lumen projects
Stars: ✭ 128 (-75.38%)
Mutual labels:  lumen
Jikan Rest
The REST API for Jikan
Stars: ✭ 200 (-61.54%)
Mutual labels:  lumen
Vue Lumen Starter
😎 VueJs & Lumen Api Starter.
Stars: ✭ 116 (-77.69%)
Mutual labels:  lumen
Laravel Source Encrypter
Laravel and Lumen Source Code Encrypter
Stars: ✭ 175 (-66.35%)
Mutual labels:  lumen
Laravel Log Viewer
🐪 Laravel log viewer
Stars: ✭ 2,726 (+424.23%)
Mutual labels:  lumen
Docker Lumen
Docker Compose setup for quickly writing apps with the Lumen Framework
Stars: ✭ 211 (-59.42%)
Mutual labels:  lumen
Laravel Intl
🚫 [ABANDONED] Easy to use internationalization/localization functions for Laravel 5
Stars: ✭ 185 (-64.42%)
Mutual labels:  lumen

Qiniu 云储存 Laravel 5/6/7/8/9 Storage版

基于 https://github.com/qiniu/php-sdk 开发

符合Laravel 5/6/7/8/9 的Storage用法。

注意

 从七牛获取到的putTime时间戳,是以 100纳秒 为单位的。

参考 https://developer.qiniu.com/kodo/api/1308/stat https://developer.qiniu.com/kodo/api/1284/list

 PHP 可以用 Carbon Carbon::createFromTimestampMs($putTime/10000) 来保证最大精度  

JavaScript 可以用 moment moment(putTime/10000) 来保证最大精度  

更新

v9.0 支持 Laravel 9

v0.10 支持“公开空间”的 CDN 时间戳防盗链

v0.9 兼容 Laravel 5.5 的自动包安装功能

v0.8

  1. 修正了getUrl
  2. 修正了最新的 Qiniu API 适配

v0.7

  1. 增加了 withUploadToken, lastReturn 等命令。
  2. 修正了代码内的一些typo

v0.6 增加了fetch, qetag 命令。

v0.5 增加了QiniuUrl来更方便的设置文件 URL 参数。

v0.3 增加了对PIPE以及回调地址参数的配置。 感谢abcsun提供的灵感。

v0.2 提供了对多域名的支持。这是为了配合七牛的默认域名、HTTPS域名和自定义域名而添加的功能。

安装

  • composer require zgldh/qiniu-laravel-storage:0.10.3
  • config/app.php 里面的 providers 数组, 加上一行 zgldh\QiniuStorage\QiniuFilesystemServiceProvider::class
  • config/filesystem.php 里面的 disks数组加上:
    'disks' => [
        ... ,
        'qiniu' => [
            'driver'  => 'qiniu',
            'domains' => [
                'default'   => 'xxxxx.com1.z0.glb.clouddn.com', //你的七牛域名
                'https'     => 'dn-yourdomain.qbox.me',         //你的HTTPS域名
                'custom'    => 'static.abc.com',                //Useless 没啥用,请直接使用上面的 default 项
             ],
            'access_key'=> '',  //AccessKey
            'secret_key'=> '',  //SecretKey
            'bucket'    => '',  //Bucket名字
            'notify_url'=> '',  //持久化处理回调地址
            'access'    => 'public',  //空间访问控制 public 或 private
            'hotlink_prevention_key' => 'afc89ff8bd2axxxxxxxxxxxxxxbb', // CDN 时间戳防盗链的 key。 设置为 null 则不启用本功能。
//            'hotlink_prevention_key' => 'cbab68a279xxxxxxxxxxab509a', // 同上,备用
        ],
    ],
  • 完成

使用

第一种用法

    $disk = \Storage::disk('qiniu');
    $disk->exists('file.jpg');                      //文件是否存在
    $disk->get('file.jpg');                         //获取文件内容
    $disk->put('file.jpg',$contents);               //上传文件
    $disk->put('file.jpg',fopen('path/to/big.jpg','r+')); //分段上传文件。建议大文件>10Mb使用。    
    $disk->prepend('file.log', 'Prepended Text');   //附加内容到文件开头
    $disk->append('file.log', 'Appended Text');     //附加内容到文件结尾
    $disk->delete('file.jpg');                      //删除文件
    $disk->delete(['file1.jpg', 'file2.jpg']);
    $disk->copy('old/file1.jpg', 'new/file1.jpg');  //复制文件到新的路径
    $disk->move('old/file1.jpg', 'new/file1.jpg');  //移动文件到新的路径
    $size = $disk->size('file1.jpg');               //取得文件大小
    $time = $disk->lastModified('file1.jpg');       //取得最近修改时间 (UNIX)
    $files = $disk->files($directory);              //取得目录下所有文件
    $files = $disk->allFiles($directory);               //这个没实现。。。
    $directories = $disk->directories($directory);      //这个也没实现。。。
    $directories = $disk->allDirectories($directory);   //这个也没实现。。。
    $disk->makeDirectory($directory);               //这个其实没有任何作用
    $disk->deleteDirectory($directory);             //删除目录,包括目录下所有子文件子目录
    $disk->url('a.png');                            //返回文件的URL
    $disk->url(['path' => 'a.png', 'domainType' => 'default']); //返回文件的URL

    $disk->getAdapter()->uploadToken();              //获取上传Token
    $disk->getAdapter()->uploadToken('file.jpg');    //获取上传Token

    $disk->getAdapter()->withUploadToken($token);    // 使用自定义的 uploadToken 进行上传,
    $disk->put('file.jpg',$content);                // 则本次的 put 操作,将使用上述的 $token 进行上传。
                                                    // 常用于自动触发持久化处理 https://github.com/qiniu/php-sdk/blob/master/examples/upload_and_pfop.php
    
    $disk->getAdapter()->downloadUrl('file.jpg');                //获取下载地址
    $disk->getAdapter()->downloadUrl('file.jpg')
                      ->setDownload('foo.jpg');                 //获取下载地址,文件名为 foo.jpg
    $disk->getAdapter()->downloadUrl('file.jpg', 'https');       //获取HTTPS下载地址
    $disk->getAdapter()->privateDownloadUrl('file.jpg');         //获取私有bucket下载地址
    $disk->getAdapter()->privateDownloadUrl('file.jpg?attname=foo.jpg');         
                                                                //获取私有bucket下载地址,文件名为 foo.jpg
    $disk->getAdapter()->privateDownloadUrl('file.jpg', 'https');//获取私有bucket的HTTPS下载地址
    $disk->getAdapter()->privateDownloadUrl('file.jpg',
                                        [
                                            'domain'=>'https',
                                            'expires'=>3600
                                        ]);                     //获取私有bucket的HTTPS下载地址。超时 3600 秒。
    $disk->getAdapter()->avInfo('file.mp3');                     //获取多媒体文件信息
    $disk->getAdapter()->imageInfo('file.jpg');                  //获取图片信息
    $disk->getAdapter()->imageExif('file.jpg');                  //获取图片EXIF信息
    $disk->getAdapter()->imagePreviewUrl('file.jpg','imageView2/0/w/100/h/200');                         //获取图片预览URL
    $disk->getAdapter()->privateImagePreviewUrl('file.jpg','imageView2/0/w/100/h/200');                  //获取私有bucket图片预览URL
    $disk->getAdapter()->verifyCallback('application/x-www-form-urlencoded', $request->header('Authorization'), 'callback url', $request->getContent());//验证回调内容是否合法
    $disk->getAdapter()->persistentFop('file.flv','avthumb/m3u8/segtime/40/vcodec/libx264/s/320x240');   //执行持久化数据处理
    $disk->getAdapter()->persistentFop('file.flv','fop','队列名');   //使用私有队列执行持久化数据处理
    $disk->getAdapter()->persistentStatus($persistent_fop_id);       //查看持久化数据处理的状态。
    $disk->getAdapter()->fetch('http://abc.com/foo.jpg', 'bar.jpg'); //调用fetch将 foo.jpg 数据以 bar.jpg 的名字储存起来。
    $disk->getAdapter()->qetag();        //得到最后一次执行 put, copy, append 等写入操作后,得到的hash值。详见 https://github.com/qiniu/qetag
    $disk->getAdapter()->lastReturn();   //得到最后一次执行 put, copy, append 等写入操作后,得到的返回值。

第二种用法 (就是省略了一个getAdapter)

    use zgldh\QiniuStorage\QiniuStorage;

    $disk = QiniuStorage::disk('qiniu');
    $disk->exists('file.jpg');                      //文件是否存在
    $disk->get('file.jpg');                         //获取文件内容
    $disk->put('file.jpg',$contents);               //上传文件
    $disk->put('file.jpg',fopen('path/to/big.jpg','r+')); //分段上传文件。建议大文件>10Mb使用。
    $disk->prepend('file.log', 'Prepended Text');   //附加内容到文件开头
    $disk->append('file.log', 'Appended Text');     //附加内容到文件结尾
    $disk->delete('file.jpg');                      //删除文件
    $disk->delete(['file1.jpg', 'file2.jpg']);
    $disk->copy('old/file1.jpg', 'new/file1.jpg');  //复制文件到新的路径
    $disk->move('old/file1.jpg', 'new/file1.jpg');  //移动文件到新的路径
    $size = $disk->size('file1.jpg');               //取得文件大小
    $time = $disk->lastModified('file1.jpg');       //取得最近修改时间 (UNIX)
    $files = $disk->files($directory);              //取得目录下所有文件
    $files = $disk->allFiles($directory);               //这个没实现。。。
    $directories = $disk->directories($directory);      //这个也没实现。。。
    $directories = $disk->allDirectories($directory);   //这个也没实现。。。
    $disk->makeDirectory($directory);               //这个其实没有任何作用
    $disk->deleteDirectory($directory);             //删除目录,包括目录下所有子文件子目录

    $disk->uploadToken();                           //获取上传Token
    $disk->uploadToken('file.jpg');                 //获取上传Token
    
    $disk->withUploadToken($token);                 // 使用自定义的 uploadToken 进行上传,
    $disk->put('file.jpg',$content);                // 则本次的 put 操作,将使用上述的 $token 进行上传。
                                                    // 常用于自动触发持久化处理 https://github.com/qiniu/php-sdk/blob/master/examples/upload_and_pfop.php
    
    $disk->downloadUrl('file.jpg');                     //获取下载地址
    $disk->downloadUrl('file.jpg')
         ->setDownload('foo.jpg');                      //获取下载地址,文件名为 foo.jpg
    $disk->downloadUrl('file.jpg', 'https');            //获取HTTPS下载地址
    $disk->privateDownloadUrl('file.jpg');              //获取私有bucket下载地址
    $disk->privateDownloadUrl('file.jpg?attname=foo.jpg');         
                                                                //获取私有bucket下载地址,文件名为 foo.jpg
    $disk->privateDownloadUrl('file.jpg', 'https');     //获取私有bucket的HTTPS下载地址
    $disk->privateDownloadUrl('file.jpg',
                            [
                                'domain'=>'https',
                                'expires'=>3600
                            ]);                         //获取私有bucket的HTTPS下载地址。超时 3600 秒。
    $disk->avInfo('file.mp3');                          //获取多媒体文件信息
    $disk->imageInfo('file.jpg');                       //获取图片信息
    $disk->imageExif('file.jpg');                       //获取图片EXIF信息
    $disk->imagePreviewUrl('file.jpg','imageView2/0/w/100/h/200');                          //获取图片预览URL
    $disk->privateImagePreviewUrl('file.jpg','imageView2/0/w/100/h/200');                   //获取私有bucket图片预览URL
    $disk->verifyCallback('application/x-www-form-urlencoded', $request->header('Authorization'), 'callback url', $request->getContent());//验证回调内容是否合法
    $disk->persistentFop('file.flv','avthumb/m3u8/segtime/40/vcodec/libx264/s/320x240');    //执行持久化数据处理
    $disk->persistentFop('file.flv','fop','队列名');    //使用私有队列执行持久化数据处理
    $disk->persistentStatus($persistent_fop_id);        //查看持久化数据处理的状态。

    $disk->fetch('http://abc.com/foo.jpg', 'bar.jpg'); //调用fetch将 foo.jpg 数据以 bar.jpg 的名字储存起来。
    $disk->qetag();     //得到最后一次执行 put, copy, append 等写入操作后,得到的hash值。详见 https://github.com/qiniu/qetag
    $disk->lastReturn();//得到最后一次执行 put, copy, append 等写入操作后,得到的返回值。

官方SDK / 手册

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].