luckydate2021/flysystem-us3 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

luckydate2021/flysystem-us3

Composer 安装命令:

composer require luckydate2021/flysystem-us3

包简介

Flysystem adapter for the Ucloud US3 storage.

README 文档

README

Flysystem adapter for the Ucloud US3 storage.

使用

  1. 拉取

    composer require luckydate2021/flysystem-us3

    如果提示找不到就还原composer的默认仓库再试。注意只限hyperf(^2.2)使用.

    如果提示 league/flysystem 引用的版本问题,就先指定league/flysystem为^1.0再拉取

    composer require "league/flysystem:^1.0"

  2. 按照 hyperf 的手册加入filesystem,和发布

    composer require hyperf/filesystem

    发布

    php bin/hyperf.php vendor:publish hyperf/filesystem

  3. 发布后在config下autoload有个file.php,修改增加

    'us3' => [
    'driver' => \Luckydate2021\Flysystem\Us3\Us3AdapterFactory::class, 
    'public_key' => env('US3_PUBLIC_KEY'),
    'secret_key' => env('US3_SECRET_KEY'),
    'bucket' => env('US3_BUCKET'),
    'suffix' => env('US3_SUFFIX'), //eg. ".ufile.ucloud.cn"
    'path_prefix' => '',
    'https' => false,
    ]
    
    
  4. 由于第三方flysystem返回writeStream的结果是布尔值,但ucloud错误是json,导致错也是true; 可以创建一个目录例如patch,然后把Filesystem.php复制到目录,删除强制转换的(bool),直接返回ucloud结果。 然后在composer.json,加入这个文件自动加载。

    备注:ucloud上传成功返回的文件名称,错误的话返回是个json,里面有错误。

"autoload": {
        "psr-4": {
            "App\\": "app/"
        },
        "files": [
            "patch/Filesystem.php"
        ]
    },

示例

use Hyperf\Filesystem\FilesystemFactory;
use Hyperf\Di\Annotation\Inject;

----- class -----

/**
* @Inject()
* @var FilesystemFactory
*/
protected $filesystemFactory;

public function index()
    {
        $file = $this->request->file('avatar');
        if ($file->isValid()) {

            $ext = strtolower($file->getExtension());

            $filePathUrl = rand(1000, 9999) . '.' . $ext;

            try {
                $stream = fopen($file->getRealPath(), 'r+');
                $bucket = $this->filesystemFactory->get('us3');
                $bucket->writeStream($filePathUrl, $stream, ['mime' => 'image/png']); //主要这里的mine要根据文件来传,这里只是示例
                if (is_resource($stream)) {
                    fclose($stream);
                }
               //'注意:如果发现无法上传,则检查key之类的是否正确,还是不知道就改一下拉下来的Us3Adapter.php,把writeStream返回的结果打印下,看ucloud的报错信息';
            } catch (\Exception $e) {
                return '上传失败';
            }

        }  

其他注意

只适用于league/flysystem ^1.1版本。

在Us3Sdk中使用了new CoroutineHandler(),只限hyperf(^2.2)使用。

use Hyperf\Guzzle\CoroutineHandler;

$stack->setHandler(new CoroutineHandler());

一定要传正确的文件类型mime,不然Ucloud默认的是二进制文件 application/octet-stream,容易格式错误。

例如 $bucket->writeStream($filePathUrl, $stream, ['mime' => 'image/png']);

luckydate2021/flysystem-us3 适用场景与选型建议

luckydate2021/flysystem-us3 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 11 次下载、GitHub Stars 达 0, 最近一次更新时间为 2022 年 11 月 26 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 luckydate2021/flysystem-us3 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 luckydate2021/flysystem-us3 我们能提供哪些服务?
定制开发 / 二次开发

基于 luckydate2021/flysystem-us3 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 11
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 4
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2022-11-26