我需要一个能够从我服务器上的文件夹下载多个图像的php文件,每个图像都有一个唯一的ID。
e.g。
我的服务器上有一张图片:/home/example/public_html/multipleimage/2.png
我想通过独特的php文件下载该图像:http://example.com/file.php
我会输入以下网址:http://example.com/file.php?id=2 浏览器必须返回图像。
但是...... php文件怎么样? 可以在不通过数据库的情况下完成吗?
感谢。
答案 0 :(得分:4)
<?php
header("Content-Type: image/png");
readfile(
sprintf(
'/home/example/public_html/multipleimage/%d.png',
$_GET['id']
)
);
请参阅PHP手册中的以下条目:
header
- Send a raw HTTP header readfile
- Reads a file and writes it to the output buffer. sprintf
- Returns a string produced according to the formatting string format. $_GET
- associative array of variables passed to the current script via the URL parameters 请注意,我将sprintf
与%d
一起使用,因此它会将任何非数字ID值静默转换为0,因此像../../etc/passwd
这样的恶意输入会尝试读取{{ 1}}。如果您想使用除数字之外的任何其他内容,则需要清理输入以防止directory traversal attacks和null byte poisoning (before PHP 5.3.4):
答案 1 :(得分:0)
我仍然不确定我知道你想要什么,但在这里:
<?php
if (array_key_exists('id', $_GET) && is_numeric($_GET['id'])) {
header("Content-Type: image/png");
echo file_get_contents("/home/example/public_html/multipleimage/".$_GET['id'].".png");
}
?>