我正在尝试将图像插入到我的数据库中。我读了几篇文章,我显然做错了。我知道列数据类型需要是图像的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,我知道将图像直接插入数据库并不是最有效的方法,并且通过引用文件路径还有其他方法。
答案 0 :(得分:2)
你想要使用的是php的$_FILES
超全局。
$content = file_get_contents($_FILES['call_file']['tmp_name']);
您可能希望对$content
等进行病毒检查。
我还建议您将文件存储在系统而不是数据库中的blob中,并将路径存储到文件中。
答案 1 :(得分:1)
要将图像文件存储在数据库中(这通常是一个坏主意,因为文件系统是专为有效存储文件而设计的数据库),您需要读取上传文件的内容然后放入它进入查询。
在php中,您应该使用$ _FILES全局数组来获取有关上传文件的信息,使用is_uploaded_file()检查上传文件是否一切正常,然后您必须使用标准文件访问功能读取上传文件的内容,那么在将文件插入数据库时,你必须转义文件的内容。