• file does not exist 阿里云OSS图片上传遇到的问题


    ./uploads20171209/0497b8dd16e72c6fcf5bfd552f535a81.png  file does not exist
    

    原代码

    function aliyun($savePath,$category='',$isunlink=false,$bucket="dddgame"){
            $accessKeyId = config('aliyun_oss.accessKeyId');//去阿里云后台获取秘钥
            $accessKeySecret = config('aliyun_oss.accessKeySecret');//去阿里云后台获取秘钥
            $endpoint = config('aliyun_oss.endpoint');//你的阿里云OSS地址
            $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
            // 判断bucketname是否存在,不存在就去创建
            if( !$ossClient->doesBucketExist($bucket)){
                $ossClient->createBucket($bucket);
            }
            $category=empty($category)?$bucket:$category;
    
            $savePath = str_replace("\","/",$savePath);
    
            $object = $category.'/'.$savePath;//想要保存文件的名称
            $file =  './uploads\'.$savePath;//文件路径,必须是本地的。
    
            try{
                $ossClient->uploadFile($bucket,$object,$file);
                if ($isunlink==true){
                    unlink($file);
                }
            }catch (OssException $e){
                $e->getErrorMessage();
            }
            $oss=config('aliyun_oss.url');
            return $oss."/".$object;
        }
    

    这段代码在windows下正常,在linux里就有问题了。

    错就错在 $file = './uploads\'.$savePath;//文件路径,必须是本地的。,linux 的目录结构跟windows不一致。

    修正后,

    function aliyun($savePath,$category='',$isunlink=false,$bucket="dddgame"){
            $accessKeyId = config('aliyun_oss.accessKeyId');//去阿里云后台获取秘钥
            $accessKeySecret = config('aliyun_oss.accessKeySecret');//去阿里云后台获取秘钥
            $endpoint = config('aliyun_oss.endpoint');//你的阿里云OSS地址
            $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
            //        判断bucketname是否存在,不存在就去创建
            if( !$ossClient->doesBucketExist($bucket)){
                $ossClient->createBucket($bucket);
            }
            $category=empty($category)?$bucket:$category;
    
            $savePath = str_replace("\","/",$savePath);
    
            $object = $category.'/'.$savePath;//想要保存文件的名称
            $file =  './uploads/'.$savePath;//文件路径,必须是本地的。
    
            try{
                $ossClient->uploadFile($bucket,$object,$file);
                if ($isunlink==true){
                    unlink($file);
                }
            }catch (OssException $e){
                $e->getErrorMessage();
            }
            $oss=config('aliyun_oss.url');
            return $oss."/".$object;
    }
    

    正常了!!!!

    厉害了,胡总。

  • 相关阅读:
    简单poi创建execl
    Orcale 存储过程实践总结
    PLSQL 创建自定义函数注意事项
    字符串算法模板整理
    多项式FFT/NTT模板(含乘法/逆元/log/exp/求导/积分/快速幂)
    UVALive
    Gym
    Gym
    Kattis
    Kattis
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/8012016.html
Copyright © 2020-2023  润新知