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

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

  •  
  •   xmlf · 332 天前 · 1128 次点击
    这是一个创建于 332 天前的主题,其中的信息可能已经有所发展或是发生改变。

    $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
        1
    w516322644   332 天前
    这种一般都会返回错误信息的,google 或百度下错误信息。
    如果英文不报错,自己存个中英文对应关系,上传的英文,下载的时候换回中文。
        2
    learnshare   332 天前
    一般都存英文文件名,就是为了避免这些麻烦
        3
    xmlf   332 天前
    @learnshare 难道就没有解决办法吗?悲催~~~
    我总不能要求用户不能上传中文文件名吧?
        4
    nicevar   332 天前
    @xmlf 为啥要要求用户?中文名你自己处理一下不行么。。。
        5
    zjb861107   332 天前
    文件名要自行 URL 编码?

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

    $key = iconv("GBK//IGNORE","UTF-8",'media/祖国好啊.jpg');
    $local_path = iconv("GBK//IGNORE","UTF-8",'media/祖国好啊.jpg');
        11
    Mitt   331 天前 via iPhone
    @xmlf 非 GBK 编码就会产生同样问题
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1993 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 23ms · UTC 02:23 · PVG 10:23 · LAX 18:23 · JFK 21:23
    ♥ Do have faith in what you're doing.