将图像插入数据库和enctype =“multipart / form-data”

时间:2013-09-06 16:45:17

标签: php mysql

我正在尝试将图像插入到我的数据库中。我读了几篇文章,我显然做错了。我知道列数据类型需要是图像的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']没有发布,有没有更好的方法将图像插入我的数据库?作为一个fyi,我知道将图像直接插入数据库并不是最有效的方法,并且通过引用文件路径还有其他方法。

2 个答案:

答案 0 :(得分:2)

你想要使用的是php的$_FILES超全局。

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

您可能希望对$content等进行病毒检查。

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

答案 1 :(得分:1)

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

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