php curl中文文件名上传问题解决

使用PHP的CurlFile上传文件时,如果上传文件为中文名,接收端是接收不到文件的,curl 的CURLOPT_POSTFIELDS 返回false (原因是 curl_file_create函数读取windows本地中文文件名失败);

curl_file_create函数在使用的时候,windows默认编码是gbk,所以读取windows系统上中文文件会失败,转换文件名的编码格式再读取,第三个参数传原文件名,不然接收者接收到的gbk 编码的文件名,就会显示乱码。

此时需要对文件进行转码

if (strtoupper(substr(PHP_OS,0,3))=='WIN') {
$realPath= iconv('utf-8', 'gbk', $realPath); //处理中文名文件
}
我的代码:
if(file_exists($readfile)){ // 检测文件是否存在
    if (strtoupper(substr(PHP_OS,0,3)) == 'WIN') {
        $realPath= iconv('utf-8', 'gbk', realpath($readfile)); //windows系统处理中文名文件
    }else{
        $realPath= realpath($readfile);
    }
    $postData['sc_file'] = new \CurlFile($realPath);
    $postData['save_sc_path'] = config('admin.upload_path').'instruction/'.$data['filename'];
}

问题解决。

点赞

发表回复

电子邮件地址不会被公开。必填项已用 * 标注