开发者社区> 问答> 正文

ossphpsdk这里没用问题?


    /**
     * 上传文件,适合比较大的文件
     * @param string $bucket (Required)
     * @param string $object (Required)
     * @param string $file (Required)
     * @param array $options (Optional)
     * @author xiaobing.meng@alibaba-inc.com
     * @since 2012-02-28
     * @return ResponseCore
     */
    public function upload_file_by_file($bucket,$object,$file,$options = NULL){
        //options
        $this->validate_options($options);


        if(!$options){
            $options = array();
        }


        //bucket
        $this->is_empty($bucket,OSS_BUCKET_IS_NOT_ALLOWED_EMPTY);


        //object
        $this->is_empty($object,OSS_OBJECT_IS_NOT_ALLOWED_EMPTY);


        //file
        $this->is_empty($file, OSS_FILE_PATH_IS_NOT_ALLOWED_EMPTY);
        
        if($this->chk_chinese($file)){
            $file = iconv('utf-8','gbk',$file);
        }
        
        $options[self::OSS_FILE_UPLOAD] = $file;
        
        if(!file_exists($options[self::OSS_FILE_UPLOAD])){
            throw new OSS_Exception($options[self::OSS_FILE_UPLOAD].OSS_FILE_NOT_EXIST);
        }
        
        $filesize = filesize($options[self::OSS_FILE_UPLOAD]);
        $partsize = 1024 * 1024 ; //默认为 1M
        
        
        $extension = explode ( '.', $file );
        $extension = array_pop ( $extension );
        $content_type = MimeTypes::get_mimetype(strtolower($extension));
                
        $options[self::OSS_METHOD] = self::OSS_HTTP_PUT;
        $options[self::OSS_BUCKET] = $bucket;
        $options[self::OSS_OBJECT] = $object;
        $options[self::OSS_CONTENT_TYPE] = $content_type;
        $options[self::OSS_CONTENT_LENGTH] = $filesize;
                
        $response = $this->auth($options);
        return $response;
    } [font=微软雅黑, 'Microsoft Yahei', 'Hiragino Sans GB', tahoma, arial, 宋体]上面是alioss php sdk upload_file_by_file的一段代码,如果文件路径编码是utf-8,这里会把file重新编码成gbk,然后下面用重新编码后的字符去查看这个文件是否存在,相当于把传入的路径都改变了,这里一定会导致文件不存在的错误,同样的问题在多个sdk接口里面都是存在的,难道其他人没有遇到过这个问题?
[font=微软雅黑, 'Microsoft Yahei', 'Hiragino Sans GB', tahoma, arial, 宋体]

展开
收起
minibee88 2014-07-21 14:19:33 7548 0
3 条回答
写回答
取消 提交回答
  • Reossphpsdk这里没用问题?
    阿里的sdk太难懂了,出现问题很难找出,如果每个功能做一个单独的测试程序多好,方便学习啊
    2015-04-28 11:59:42
    赞同 展开评论 打赏
  • Reossphpsdk这里没用问题?
    帮你顶下,希望官方出来说明一下
    2014-07-30 22:10:21
    赞同 展开评论 打赏
  • Reossphpsdk这里没用问题?
    为什么没有人回应呢,我用的linux的环境,中文是uft-8的编码,ali也没有人验证一下?

    -------------------------

    Reossphpsdk这里没用问题?
    只能说,对ali相当无语!!!!
    2014-07-22 11:07:53
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Android插件化-从入门到"放弃" 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载