V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xmlf
V2EX  ›  PHP

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

  •  
  •   xmlf · 2019-01-09 16:07:53 +08:00 · 2983 次点击
    这是一个创建于 1905 天前的主题,其中的信息可能已经有所发展或是发生改变。

    $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); }

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

    11 条回复    2019-01-11 01:45:17 +08:00
    w516322644
        1
    w516322644  
       2019-01-09 16:52:49 +08:00
    这种一般都会返回错误信息的,google 或百度下错误信息。
    如果英文不报错,自己存个中英文对应关系,上传的英文,下载的时候换回中文。
    learnshare
        2
    learnshare  
       2019-01-09 16:53:53 +08:00
    一般都存英文文件名,就是为了避免这些麻烦
    xmlf
        3
    xmlf  
    OP
       2019-01-09 18:08:19 +08:00
    @learnshare 难道就没有解决办法吗?悲催~~~
    我总不能要求用户不能上传中文文件名吧?
    nicevar
        4
    nicevar  
       2019-01-09 18:11:26 +08:00
    @xmlf 为啥要要求用户?中文名你自己处理一下不行么。。。
    zjb861107
        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
    xmlf
        6
    xmlf  
    OP
       2019-01-09 18:27:21 +08:00 via Android
    @nicevar 因为特殊需要,需要保留中文文件名
    learnshare
        7
    learnshare  
       2019-01-09 18:36:41 +08:00
    @xmlf #1 已经给出了方案
    数据库里存着原始文件名,以及文件存储路径。下载的时候在返回信息里给原始文件名就行了
    xmlf
        8
    xmlf  
    OP
       2019-01-09 18:50:21 +08:00 via Android
    @learnshare 难道中文文件名就无法通过 Api 上传吗?感觉不应该啊!在对象存储控制台上操作没任何问题。
    learnshare
        9
    learnshare  
       2019-01-09 18:56:55 +08:00
    @xmlf 这个问题应该问腾讯云了
    xmlf
        10
    xmlf  
    OP
       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
        11
    Mitt  
       2019-01-11 01:45:17 +08:00 via iPhone
    @xmlf 非 GBK 编码就会产生同样问题
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5707 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 01:48 · PVG 09:48 · LAX 18:48 · JFK 21:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.