zoukankan      html  css  js  c++  java
  • 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;
    }
    

    正常了!!!!

    厉害了,胡总。

  • 相关阅读:
    一点一点学ASP.NET系列
    深入理解JavaScript系列
    MVVM模式应用体会
    SQL查询oracle的nclob字段
    CSLA多语言设置
    用2个无线路由器桥接实现扩大无线范围方法
    DevExpress的GridControl控件设置自定义显示方法
    android配置开发环境
    warning MSB3162: 所选的“Microsoft Report Viewer 2012 Runtime”项需要“Microsoft.SqlServer.SQLSysClrTypes.11.0”。在“系统必备”对话框中选择缺少的系统必备组件,或者为缺少的系统必备组件创建引导程序包。
    GDI+实现双缓冲绘图方法一
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/8012016.html
Copyright © 2011-2022 走看看