上传图片无法自定义图片名称

RT

$policy = [
            'saveKey' => date('YmdHis') . "-$(key)",    //自定义文件名(?)
            'deleteAfterDays' => 30                     //30天后自动删除
        ];
    $token = $auth->uploadToken(
            $bucket,
            null,
            3600,
            $policy
        );

图片上传是成功的。但是图片名还是系统自动生成名字。

现在不支持重命名了么,还是saveKey的用法有问题?

阅读 4.9k
3 个回答

打印token下,以冒号分割:,取最好一段,base64 解码下,看是否是saveKey 设置到了uptoken 中了

回复楼上

public function uploadToken(
        $bucket,
        $key = null,
        $expires = 3600,
        $policy = null,
        $strictPolicy = true
    ) {
        $deadline = time() + $expires;
        $scope = $bucket;
        if ($key !== null) {
            $scope .= ':' . $key;
        }
        $args = array();
        $args = self::copyPolicy($args, $policy, $strictPolicy);
        $args['scope'] = $scope;
        $args['deadline'] = $deadline;
        $b = json_encode($args);
        var_dump($b);
        return $this->signWithData($b);
    }

这里打印的信息看起来没有问题
图片描述

不过,楼主使用的是
图片描述

这个类中的put方法上传。

$key = date('YmdHis').'-'.microtime(1). "-{$file_name_suffix}";
        // 初始化 UploadManager 对象并进行文件的上传。
        $uploadMgr = new UploadManager();
        try{
            // 调用 UploadManager 的 put 方法进行文件的上传。
            list($ret, $err) = $uploadMgr->put($token, $key, $data);
            if(!empty($err)){
                return array('status' => 0, 'info' => '上传失败:'. $err);
            }else{
                $ret['key'] = $qiniu_base_url . '/' . $ret['key'];
                $this->ret = array('status' => 1, 'info' => '上传成功', 'data' => $ret);
            }
        }catch(\Exception $e){
            $this->ret = ['status' => 0, 'info' => '上传失败:'. $e->getMessage(), 'data' => $e->getCode()];
        }

大致如下,直接指定文件名参数倒是可以设置文件名

虽然这种用法和官方文档有些出入……

在数组外定义一个变量, $name=time().rand();$name放到数组对应位置

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
七牛云问答
子站问答
访问
宣传栏