小资电脑
小资电脑
  • 发布:2016-05-31 15:41
  • 更新:2016-06-02 20:19
  • 阅读:928

【报Bug】plus.uploader不能上传文件名有汉字的图片

分类:HTML5+

详细问题描述
拍照和相册选取照片后再通过plus.uploader上传至服务器都正常,但如果图片的文件名有汉字,上传就会失败。

重现步骤
[1、将手机相册中的某个图片改名为包含汉字 2、选取上传]
[结果:上传失败]

运行环境
[安卓 4.4.4 MIpad MIUI7.3]
[HBuilder 7.1.2.201605102311]

联系方式
[QQ:843212058]
[电话]

2016-05-31 15:41 分享
已邀请:
小资电脑

小资电脑 (作者)

补充一下,经过多方测试,确定问题出在
http://ask.dcloud.net.cn/question/722
官方推荐的这个后台代码上 我用的PHP版本测试

这段脚本对中文支持不友好造成的,改造一下,对上传来的文件重命名保存,就可以了。
我用的重命名方法是取得当前时间毫秒数,用这个值作为主文件名。

附我修改了一下的相关代码

foreach ( $_FILES as $name=>$file ) {  
    $fn=$file['name'];  
    $ft=strrpos($fn,'.',0);  
    $fe=substr($fn,$ft);//后缀  
    $fm = getMillisecond();//主文件名  
    $fn = $fm . $fe;  
    $fp='files/'.$fn;//重新组合新的文件名  
    move_uploaded_file($file['tmp_name'],$fp);  
    $fs[$name]=array('name'=>$fn,'url'=>$fp,'type'=>$file['type'],'size'=>$file['size']);  
}  

function getMillisecond() {
list($t1, $t2) = explode(' ', microtime());
return (float)sprintf('%.0f', (floatval($t1) floatval($t2)) * 1000);
}

供大家参考

五块钱的果汁

五块钱的果汁 - 勤奋是一种被逼无奈 - 热爱是一种情不自禁~

建议对上传文件名做转义

  • 小资电脑 (作者)

    大师能给个demo吗?我试过了escape、encodeURI和其他的自定义转义函数,报错倒是不报错了,但服务器其实是接收不到上传的文件的。谢谢

    2016-06-01 23:10

要回复问题请先登录注册