21xrx.com
2024-12-22 18:35:58 Sunday
登录
文章检索 我的文章 写文章
PHP文件下载遇到特殊符号文件名解决方案
2023-06-14 15:32:35 深夜i     --     --
PHP 文件下载 特殊符号

在PHP中使用文件下载功能时,有时会遇到文件名带有特殊符号的情况,例如+、&、#等符号。这会导致浏览器无法解析文件名,从而无法下载文件。

为了解决这个问题,我们可以使用PHP函数urlencode()对文件名进行编码,将特殊字符转换成URI编码。示例代码如下:


$file_name = "文件名+包含#特殊&符号.jpg";

$file_path = "/public/download/" . $file_name;

header('Content-Type: application/octet-stream');

header('Content-Disposition: attachment; filename="' . urlencode($file_name) . '"');

header('Content-Transfer-Encoding: binary');

header('Expires: 0');

header('Cache-Control: must-revalidate');

header('Pragma: public');

header('Content-Length: ' . filesize($file_path));

ob_clean();

flush();

readfile($file_path);

exit;

以上代码中,使用urlencode()函数对文件名进行编码,并将编码后的文件名作为Content-Disposition响应头中的filename属性值,以便浏览器正确解析文件名。同时,还设置了一些响应头,以确保文件能够被正确下载。

总之,通过对文件名进行URI编码,我们能够应对PHP文件下载时遇到特殊符号的情况,让文件下载功能正常工作。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复