• hyperf上传到oss报错问题解决方案


    1 报错信息

    defalut.ERROR: : RequestId: [97]

    或者

    defalut.ERROR: MissingContentLength: You must provide the Content-Length HTTP header

    2 报错原因 

    可以看的出来阿里云的oss上传方法与  swoole的 hook_curl 出现了冲突。

     解决办法

    1  使用官方的filesystem

    # 首先执行
    composer require hyperf/filesystem
    # 使用阿里云 OSS 适配器时执行
    composer require xxtime/flysystem-aliyun-oss
    # 使用 S3 适配器时执行
    composer require league/flysystem-aws-s3-v3
    composer require hyperf/guzzle
    # 使用七牛云(测试)适配器时执行
    composer require overtrue/flysystem-qiniu
    # 使用内存适配器时执行
    composer require league/flysystem-memory
    # 使用腾讯云 COS 适配器时执行
    composer require overtrue/flysystem-cos
    

       链接  https://hyperf.wiki/2.0/#/zh-cn/filesystem 

    2  不使用阿里oss的 uploadFile 方法
    使用下面的方法
      $file = $this->request->file('upload'); 
    $resource= fopen($file->getRealPath(), 'r+');
       if (!is_resource($resource)) {
                 //错误处理
            }
            $i          = 0;
            $bufferSize = 1000000; // 1M
            while (!feof($resource)) {
                if (false === $buffer = fread($resource, $block = $bufferSize)) {
                    return false;
                }
                $position = $i * $bufferSize;
                $size     = $this->oss->appendObject($this->bucket, $path, $buffer, $position );
                $i++;
            }
            fclose($resource);
            

    或者 

     go(function()use($oss,$bucket,$filePath,$file){
                if(!$oss->doesObjectexist($bucket,$filePath)){
                    $oss->putObject($bucket,$filePath,$file)
                }
            })
    3 或者使用下面的composer包

    composer require reasno/swoole-aliyunoss-addon
     
  • 相关阅读:
    linux中jdk的安装
    @Transactional 的回滚
    监听器以及在监听类里面获得bean的方法
    list的顺序反转
    iOS 升级到xcode 7和iOS9 问题处理
    iOS 9.0系统策略更新
    iOS 技术分享3
    iOS 技术分享2
    iOS 技术分享
    iOS 面试题
  • 原文地址:https://www.cnblogs.com/aln0825/p/13967217.html
Copyright © 2020-2023  润新知