我正在尝试连接到数据库并从那里查看图片。尽管显示了所有图片,但无法下载它们。为了下载,我使用了tag。
这是我的代码。
while($row = mysqli_fetch_array($result))
{
echo '
<tr>
<td align="center">
<a href="data:image/jpeg;base64,'.base64_encode($row['Pilt'] ).'" download>
<img src="data:image/jpeg;base64,'.base64_encode($row['Pilt'] ).'" width=400 class="img-thumnail" />
</a>
</td>
</tr>
';
}
这是我获取图片的数据库的一小部分。https://imgur.com/yZGsFzb。所以我注意到只有一张照片被下载,大小是150.4KiB。
我希望通过点击图像(任何大小),它将被下载。现在,当我单击图像时,会出现错误,如此https://imgur.com/yZrlIH8,而我希望看到类似于此https://imgur.com/4vkUukp的内容。我将非常感谢您的帮助。
发布于 2019-07-15 06:22:04
我建议你停止以这种方式打印大量的大图片,它们将被硬编码到HTML代码中,并一次性下载到浏览器的缓存中,2次(包括点击)。这浪费了RAM和带宽。你得到的网络错误可能是由你的链接中href
的异常大小引起的(对于你的浏览器来说,甚至可能看起来有点像恶意软件)。
相反,您希望首先在PHP脚本上动态地提供这些图像(通过将头文件设置为'Content-Type: image/png'
并打印从数据库中获得的图像内容),并提供脚本的直接URL。
这个例子就像你的截图中描述的那样,我指出了你应该在哪里替换你的SQL查询来获得图像:
while(for all your rows)
{
echo '
<tr>
<td align="center">
<a href="image.php?id=' . $id . '" download>
<img src="image.php?link=' . $id . '" width=400 class="img-thumnail" />
</a>
</td>
</tr>';
}
并且image.php
看起来类似于:
<?php
$id = htmlspecialchars($_GET['id']);
header('Content-Type: image/png');
$content = store the image contents from the BD here ($row['Pilt'] in your code);
echo $content;
请注意,image.php
动态地提供图像,我假设使用一个id来标识每个图像(可能是您的行id?如果if还不是公共的,你也可以考虑更安全的标识符)。这是PHP中常见的安全实践,因此您不会向攻击者提供绝对文件路径或其他信息。
https://stackoverflow.com/questions/57030320
复制相似问题