0

我正在尝试将图像插入我的数据库。我已经阅读了一些帖子,但我显然做错了。我知道列数据类型需要是图像的 blob。这是我做过的。

我的表格如下所示:

<form id="Dev_test" name="Dev_test" method="post" action="<?php echo htmlspecialchars($_SERVER['PHP']);?>" enctype="multipart/form-data">
<input type="file" name="call_file" id="call_file">
<input type="submit" name="submit" id="submit" value="SUBMIT">
</form>

这是我看到如何做到这一点的多种变体的地方,我什至遇到过一篇文章说这可能是不可能的。

$query = "INSERT INTO `******`.`******` (img) values ('{$_POST['file']}')"

我知道上面说的不对。

所以我的问题如下,是否有 $_POST['file'] 没有发布的原因,是否有更好的方法将图像插入我的数据库?仅供参考,我知道将图像直接插入数据库并不是最有效的方法,并且还有其他方法可以通过引用文件路径来实现。

4

2 回答 2

2

您要使用的是 php 的$_FILES超全局变量。

$content = file_get_contents($_FILES['call_file']['tmp_name']);

您可能想要进行病毒检查$content等。

我还建议您将文件存储在系统上,而不是作为 blob 存储在数据库中,而是存储文件的路径

于 2013-09-06T16:50:51.610 回答
1

要将图像文件存储在数据库中(这通常是一个坏主意,因为文件系统是专门为有效存储文件而设计的数据库),您需要读取上传文件的内容,然后将其放入查询中。

在 php 中,您应该使用 $_FILES 全局数组来获取有关上传文件的信息,使用 is_uploaded_file() 检查上传文件是否一切正常,然后您必须使用标准文件访问函数读取上传文件的内容,然后您必须将文件插入数据库时​​转义文件的内容。

于 2013-09-06T16:51:54.137 回答