在最近接触的一个项目中,IE浏览器下载阿里云oss存储的文件时,出现了乱码问题。
原因:
在上传接口中,设置了下载时的文件名为原上传的中文名,文件名应该用rawurlencode编码一下,urlencode编码会导致空格用“+”号代替,所以采用rawurlencode() 函数可以把空格编码替换为%20
/**
* 上传文件
* @param string 上传之后的 OSS object 名称
* @param string 删除文件路径
* @return boolean 上传是否成功
*/
public static function upload($ossKey, $filePath, $filename)
{
$filename = rawurlencode($filename); //解决ie下载乱码的问题 by jenny
$oss = new static();
return $oss->ossClient->uploadFile($ossKey, $filePath, [
'ContentDisposition' => "attachment;filename=\"$filename\""
]);
}
附上阿里云oss 文档链接阿里云oss文档