xiebruce / PicUploader

一个还不错的图床工具,支持Mac/Win/Linux服务器、支持压缩后上传、添加图片或文字水印、多文件同时上传、同时上传到多个云、右击任意文件上传、快捷键上传剪贴板截图、Web版上传、支持作为Mweb/Typora发布图片接口、作为PicGo/ShareX/uPic等的自定义图床,支持在服务器上部署作为图床接口,支持上传任意格式文件。
https://www.xiebruce.top/17.html
MIT License
1.19k stars 169 forks source link

ucloud配置后无法获取链接 #4

Closed singworld closed 5 years ago

singworld commented 5 years ago

其他云都配置成功了,ucloud如下配置 获取链接粘贴板会清空 什么都没有也不报错

            //Ucloud
            'ucloud' => [
                'publicKey' => '*******5VPrDQ9*******',
                'privateKey' => '******7EfxuhGe*******',
                //markdown-blog.cn-gd.ufileos.com
                'proxySuffix' => '.cn-bj.ufileos.com',
                'bucket' => 'bjmarkdown',
                //endPoint,cdn加速域名是bucket名+endPoint组成,Ucloud中没有endPoint的说法,
                //但其实这就是endPoint,这个值请自己复制cdn加速域名除去bucket名部分到这里(不包含英文句点)
                'endPoint' => 'ufile.ucloud.com.cn',
                //如果不写,则自动拼装Ucloud给的域名
                'domain' => '',
            ],

'storageType' => 'tencent,qiniu,upyun,qingcloud,ucloud',

xiebruce commented 5 years ago

代码是最新的吗?如果不是,尝试更新到最新,或者看看logs目录下有没有类似2019-04-09-error-log.txt这样的文件,有的话,打开看看里面是什么

singworld commented 5 years ago

@xiebruce 4月6号的 应该是最新的吧

singworld commented 5 years ago

@xiebruce 有这个文件

UCloud_Error::__set_state(array(
   'Code' => 400,
   'ErrRet' => 0,
   'ErrMsg' => 'invalid etag count',
   'SessionId' => NULL,
))
xiebruce commented 5 years ago

我这里是没有问题的,你调试一下这个文件uploader/UploadUcloud.php,看看日志中的报错,是这三部分中的哪部分: image

代码改成这样:

//初始化分片上传,获取本地上传的uploadId和分片大小
list($data, $err) = UCloud_MInit($this->bucket, $key);
if ($err) {
    $this->writeLog('UCloud_MInit: '.var_export($err, true)."\n", 'error_log');
    exit;
}

//数据上传
list($etagList, $err) = UCloud_MUpload($this->bucket, $key, $uploadFilePath, $data['UploadId'], $data['BlkSize']);
if ($err) {
    $this->writeLog('UCloud_MUpload: '.var_export($err, true)."\n", 'error_log');
    exit;
}

//上传p完成
list($data, $err) = UCloud_MFinish($this->bucket, $key, $data['UploadId'], $etagList);
if ($err) {
    $this->writeLog('UCloud_MFinish: '.var_export($err, true)."\n", 'error_log');
    exit;
}
singworld commented 5 years ago

@xiebruce 上传完成这块 UCloud_MFinish: UCloud_Error::__set_state(array(

xiebruce commented 5 years ago

@singworld 我试了一下直接下载github上的代码来测试,ucloud没有问题,不知道你那边为什么会出现问题,而且是在最后一步,如果说publickey和secretkey有问题,那在第一步应该就会出问题,你把代码改成这样:

//初始化分片上传,获取本地上传的uploadId和分片大小
list($data, $err) = UCloud_MInit($this->bucket, $key);
$this->writeLog('UCloud_MInit: '.var_export($data, true)."\n", 'error_log');
if ($err) {
    $this->writeLog('UCloud_MInit: '.var_export($err, true)."\n", 'error_log');
    exit;
}

//数据上传
list($etagList, $err) = UCloud_MUpload($this->bucket, $key, $uploadFilePath, $data['UploadId'], $data['BlkSize']);
$this->writeLog('UCloud_MUpload: '.var_export($etagList, true)."\n", 'error_log');
if ($err) {
    $this->writeLog('UCloud_MUpload: '.var_export($err, true)."\n", 'error_log');
    exit;
}

//上传p完成
list($data, $err) = UCloud_MFinish($this->bucket, $key, $data['UploadId'], $etagList);
$this->writeLog('UCloud_MFinish: '.var_export($data, true)."\n", 'error_log');
if ($err) {
    $this->writeLog('UCloud_MFinish: '.var_export($err, true)."\n", 'error_log');
    exit;
}

把log文件删除,再上传一遍,然后看看log的内容

singworld commented 5 years ago
UCloud_MInit: NULL
UCloud_MInit: UCloud_Error::__set_state(array(
   'Code' => 0,
   'ErrRet' => 28,
   'ErrMsg' => 'Resolving timed out after 10003 milliseconds',
   'SessionId' => NULL,
))

我有点不确定我这两个参数配置的是不是对对

                'proxySuffix' => '.cn-bj.ufileos.com',
                'endPoint' => 'ufile.ucloud.com.cn',
xiebruce commented 5 years ago

@singworld 你这第一步就出问题了,并不是第三步出的问题,你刚才说第三步我觉得奇怪,你现在肯定是参数问题,endPoint是固定这个值肯定是对的,proxySuffix你看你是哪个区域的?应该是这个问题了: image

它就只有cn-后面两个字母不同,bj(北京)、gd(广东)、sh2(上海2)

singworld commented 5 years ago

@xiebruce 我的区域是北京 存储空间域名是这个bjmarkdown.cn-bj.ufileos.com 现在的'proxySuffix' => '.cn-bj.ufileos.com',是这个 也试过这个'proxySuffix' => 'bjmarkdown.cn-bj.ufileos.com', 这两个都不行 请问这个参数应该怎么填

xiebruce commented 5 years ago

这是我的:

//Ucloud
'ucloud' => [
    'publicKey' => '****************',
    'privateKey' => '****************',
    //markdown-blog.cn-gd.ufileos.com
    'proxySuffix' => '.cn-gd.ufileos.com',
    'bucket' => 'markdown-blog',
    //endPoint,cdn加速域名是bucket名+endPoint组成,Ucloud中没有endPoint的说法,
    //但其实这就是endPoint,这个值请自己复制cdn加速域名除去bucket名部分到这里(不包含英文句点)
    'endPoint' => 'ufile.ucloud.com.cn',
    //domain可以不配置,如果不配置,将默认使用ucloud自己的domain(不需要设置,由bucket+.+endPoint连接而成)
    //拼装后的域名:http://markdown-blog.ufile.ucloud.com.cn
    'domain' => 'https://img.xiebruce.top',
    //自定义目录格式:2019/03/31
    // 'directory' => date('Y/m/d/'),
    //自定义目录格式:images/2019/03/31
    // 'directory' => 'images/' . date('Y/m/d/'),
    //自定义目录格式:images/Travel/2019/03/31
    // 'directory' => 'images/Travel/' . date('Y/m/d/'),
    //自定义目录格式:images/Travel/Maldives
    // 'directory' => 'images/Travel/Maldives',
],

image

xiebruce commented 5 years ago

@singworld 你存储空间域名是bjmarkdown.cn-bj.ufileos.com的话,那proxySubffix就是.cn-bj.ufileos.com,你填这个不行的话,那有可能是publicKeyprivateKey有问题,你重新复制一下试试。

singworld commented 5 years ago

@xiebruce 忽然直接好了 好像也没有改动 /扶额 感谢大佬

xiebruce commented 5 years ago

@singworld 不客气,好了就好!