我有图片列表,我想要每个图片都有一个“下载”链接,以便用户可以下载图片。
那么有人可以指导我如何在 php 中为任何文件提供下载链接吗?
EDIT
我希望在单击下载链接时显示下载面板我不想导航到要在浏览器上显示的图像
最佳答案
如果你想强制下载,你可以使用类似下面的东西:
<?php
// Fetch the file info.
$filePath = '/path/to/file/on/disk.jpg';
if(file_exists($filePath)) {
$fileName = basename($filePath);
$fileSize = filesize($filePath);
// Output headers.
header("Cache-Control: private");
header("Content-Type: application/stream");
header("Content-Length: ".$fileSize);
header("Content-Disposition: attachment; filename=".$fileName);
// Output file.
readfile ($filePath);
exit();
}
else {
die('The provided file path is not valid.');
}
?>
如果您只是使用普通链接链接到此脚本,文件将被下载。
顺便说一句,上面的代码片段需要在页面的开头执行(在任何标题或 HTML 输出发生之前。)如果您决定基于此创建一个用于下载任意文件的函数,也要小心- 如果您接受来自 $_GET 或 $_POST 的输入,您需要确保防止目录遍历(realpath 很方便),只允许从定义的区域内下载等。
关于php - 如何在PHP中强制下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3476362/