0

我通过 PHP 请求从网络服务器下载文件,例如在网络服务器上它存储为 LA6zneL.pdf,但用户必须使用其原始文件名获取它。所以我打电话给这个网址

LA6zneL.pdf?f=William Stallings Computer Organization and Architecture 8th Edition.pdf

用户通过 Firefox/Safari/Opera 下载文件名

William%20Stallings%20Computer%20Organization%20and%20Architecture%208th%20Edition.pdf

但在 Chrome/Internet Explorer 中没问题

William Stallings Computer Organization and Architecture 8th Edition.pdf

我不知道如何通过php完成?在我的脑海中,解决方案是用 '-' 替换所有 ' ' 字符,例如在f参数中。

这是 nginx 配置:

 add_header Content-Type "application/octet-stream";
 add_header Content-disposition "attachment; filename=$arg_f";

谢谢你的时间。

顺便提一句。刚刚在ServerFault上发现了同样的问题,没有回复,希望有人能指点我。 https://serverfault.com/questions/469837/how-to-send-file-names-with-spaces-to-user-with-nginx

4

1 回答 1

0

解决了!

php:

$arg_f = base64_encode($arg_f);

Nginx

 add_header Content-Type "application/octet-stream";
 set_by_lua $filename "return ngx.decode_base64(ngx.var['arg_f'])";
 add_header Content-disposition "attachment; filename=\"$filename\"";
于 2013-10-18T11:54:09.477 回答