$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); }
如果上传文件名含有中文字符,会报错,无法上传,求大佬指点。
1
w516322644 2019-01-09 16:52:49 +08:00
这种一般都会返回错误信息的,google 或百度下错误信息。
如果英文不报错,自己存个中英文对应关系,上传的英文,下载的时候换回中文。 |
2
learnshare 2019-01-09 16:53:53 +08:00
一般都存英文文件名,就是为了避免这些麻烦
|
3
xmlf OP @learnshare 难道就没有解决办法吗?悲催~~~
我总不能要求用户不能上传中文文件名吧? |
5
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 |
7
learnshare 2019-01-09 18:36:41 +08:00
@xmlf #1 已经给出了方案
数据库里存着原始文件名,以及文件存储路径。下载的时候在返回信息里给原始文件名就行了 |
8
xmlf OP @learnshare 难道中文文件名就无法通过 Api 上传吗?感觉不应该啊!在对象存储控制台上操作没任何问题。
|
9
learnshare 2019-01-09 18:56:55 +08:00
@xmlf 这个问题应该问腾讯云了
|
10
xmlf OP @learnshare 好吧,我自己解决了。还是要加入编码转换才行。
$key = iconv("GBK//IGNORE","UTF-8",'media/祖国好啊.jpg'); $local_path = iconv("GBK//IGNORE","UTF-8",'media/祖国好啊.jpg'); |