PHP - 用户下载文件时从URL更改文件名

时间:2017-02-09 00:00:45

标签: php

文件链接全部为http://website.com/f/xxx.png/zip/txt,依此类推 我需要对其进行设置,以便在用户下载该文件时,它会以不同的名称下载 我已经看到如何在普通页面上执行此操作,但我不知道如何在图像本身链接完成后使其工作。

感谢任何帮助:)

编辑:使用重写Steven Jeffries发布,

header('Content-Disposition: inline; filename=' . $originalFileName . "'");
header("Content-Type:" . $mimeType);
$im = imagecreatefrompng($filePathOnServer);
imagepng($im);

显示图像和

header('Content-Disposition: attachment; filename=' . $originalFileName . "'");
header("Content-Type:" . $mimeType);

让其他文件下载解决了我遇到的问题。

2 个答案:

答案 0 :(得分:1)

我认为一种简单的方法是将下载链接重定向到另一个处理下载内容的脚本等。基本上,我设置了一个下载目录,添加一些重写规则,然后创建一个脚本到处理输出的内容。

像这样(未经测试):

/path-to-web-root/download/.htaccess

%

/path-to-web-root/download/handle-downloads.php

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.* /downloads/handle-downloads.php

然后,您可以改为使用web.com/download/xxx.png/zip/txt/new-filename,而不是将下载链接作为website.com/f/xxx.png/zip/txt。 .PNG 即可。这将允许您将文件名设置为您想要的任何内容,因为浏览器将只接受网址末尾的内容。

修改:我已加入readfile's manual page的相关代码。

答案 1 :(得分:0)

您可以通过设置标题参数来设置文件响应文件名。

例如:

<?php
header('Content-Type: image/png');
header('Content-Disposition: attachment; filename="xyz.png"');
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
...

有关PHP标头函数的更多信息,请访问:http://php.net/manual/en/function.header.php