key带有特殊符号的情况换生成的getUrl生成的链接编码错误
mogody opened this issue · 6 comments
flysystem-qiniu/src/QiniuAdapter.php
Line 271 in 87a0a6a
上面生成url的代码, 最后还会做一次 urlencode, 但是在有特殊符号的情况下, urlencode编码后会无法访问, 例子如下:
正常的url路径:(带有空格和括号)
http://file1.oldlooker.com/qiniudisk/4_61PcDOhLm5Tc8kNhFlpwxbOMgmAsk4c6 (1).jpg
其中 key 为:
qiniudisk/4_61PcDOhLm5Tc8kNhFlpwxbOMgmAsk4c6 (1).jpg
那么通过 getUrl 生成的url是:
http://file1.oldlooker.com/qiniudisk/4_61PcDOhLm5Tc8kNhFlpwxbOMgmAsk4c6+%281%29.jpg
其中的括号被编码成了 %28 和 %29, 实际这样的url, 是无法访问的, 七牛直接报错:
{"error":"get from image source failed: E401"}
同问,这样带图片样式中的特殊字符也会被编码,这是个很常见的需求,望作者修复
QiniuAdapter::parse_url
$replacements = array('!', '*', "'", '(', ')', ';', ':', '@', '&', '=', '$', ',', '/', '?', '#', '[', ']');
刚刚到这段代码,作者可以加上~
吗,我当作图片样式时通不过
@symfonyluxury 换一个库, flysystem上面官方有推荐两个库, 都可以用, 这个库应该是放弃维护了
QiniuAdapter::parse_url
$replacements = array('!', '*', "'", '(', ')', ';', ':', '@', '&', '=', '$', ',', '/', '?', '#', '[', ']');
刚刚到这段代码,作者可以加上
~
吗,我当作图片样式时通不过
麻烦提供一个实例 key 看看?
key:
photo/j0zYA8x1.jpg~large_testV1
是在生成私有链接时调用 privateDownloadUrl
,访问生成链接显示 “download token auth failed”
不过目前我把样式符号换成 @
就没事了
@symfonyluxury @wh469012917 已修复