腾讯云 cos 上传中文文件报错,求指点。。

2019-01-09 16:07:53 +08:00
 xmlf

$key = 'media/祖国好啊.jpg'; $local_path = 'media/祖国好啊.jpg';

上传文件流

try { $result = $cosClient->putObject(array( 'Bucket' => $bucket, 'Key' => $key, 'Body' => fopen($local_path, 'rb') )); print_r($result); } catch (\Exception $e) { echo($e); }

如果上传文件名含有中文字符,会报错,无法上传,求大佬指点。

3000 次点击
所在节点    PHP
11 条回复
w516322644
2019-01-09 16:52:49 +08:00
这种一般都会返回错误信息的,google 或百度下错误信息。
如果英文不报错,自己存个中英文对应关系,上传的英文,下载的时候换回中文。
learnshare
2019-01-09 16:53:53 +08:00
一般都存英文文件名,就是为了避免这些麻烦
xmlf
2019-01-09 18:08:19 +08:00
@learnshare 难道就没有解决办法吗?悲催~~~
我总不能要求用户不能上传中文文件名吧?
nicevar
2019-01-09 18:11:26 +08:00
@xmlf 为啥要要求用户?中文名你自己处理一下不行么。。。
zjb861107
2019-01-09 18:15:01 +08:00
文件名要自行 URL 编码?

media%2F%E7%A5%96%E5%9B%BD%E5%A5%BD%E5%95%8A.jpg
xmlf
2019-01-09 18:27:21 +08:00
@nicevar 因为特殊需要,需要保留中文文件名
learnshare
2019-01-09 18:36:41 +08:00
@xmlf #1 已经给出了方案
数据库里存着原始文件名,以及文件存储路径。下载的时候在返回信息里给原始文件名就行了
xmlf
2019-01-09 18:50:21 +08:00
@learnshare 难道中文文件名就无法通过 Api 上传吗?感觉不应该啊!在对象存储控制台上操作没任何问题。
learnshare
2019-01-09 18:56:55 +08:00
@xmlf 这个问题应该问腾讯云了
xmlf
2019-01-09 19:53:58 +08:00
@learnshare 好吧,我自己解决了。还是要加入编码转换才行。

$key = iconv("GBK//IGNORE","UTF-8",'media/祖国好啊.jpg');
$local_path = iconv("GBK//IGNORE","UTF-8",'media/祖国好啊.jpg');
Mitt
2019-01-11 01:45:17 +08:00
@xmlf 非 GBK 编码就会产生同样问题

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/525415

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX