0

我们有一个从服务器下载文件的应用程序。下载它们后,它需要保存它,因为它使用来自响应头的文件名参数。

当我使用标准 PHP 时,download.php?id=downloadID我可以毫无问题地设置标题。

现在的任务是在客户端服务器上他们没有任何可用的 php,我需要在响应头中设置文件名。

这是我所拥有的htaccess:

<FilesMatch "\.(?i:pdf)$">
    Header set Content-Type: application/octet-stream
    Header set Content-Disposition: "attachment; filename=FILE_NAME.pdf"
</FilesMatch>

而且我不知道如何使用 htaccess 将文件名动态地分配到标题中。我已经谷歌它寻找它,但仍然没有解决方案。

有什么建议么?

4

1 回答 1

1

我不知道它是否有效,但这将是我的第一次尝试。

RewriteRule [^/]+\.pdf$ - [E=FILENAME:$0]
<FilesMatch "\.(?i:pdf)$">
    Header set Content-Type application/octet-stream
    Header set Content-Disposition "attachment; filename=%{FILENAME}e" 
</FilesMatch>

编辑似乎一些 apache 安装前缀 env 变量REDIRECT_

RewriteRule [^/]+\.pdf$ - [E=FILENAME:$0]
Header set Content-Type application/octet-stream env=REDIRECT_FILENAME
Header set Content-Disposition "attachment; filename=%{REDIRECT_FILENAME}e" env=REDIRECT_FILENAME

上面的代码不能开箱即用。就我而言,我需要另一个内部重定向。

但是,如果请求 URL 也包含文件名,为什么还需要在标头中设置文件名呢?所有浏览器都会以 URL 中的名称保存文件。因此,/path/test.pdf将导致浏览器建议 filename test.pdf

于 2012-02-16T21:31:43.030 回答