如何将图像插入数据库[重复]
Posted
技术标签:
【中文标题】如何将图像插入数据库[重复]【英文标题】:How to insert images into a database [duplicate] 【发布时间】:2020-01-21 12:45:22 【问题描述】:我是 php 的新手,我正在尝试将一些详细信息上传到数据库中,但它包含一个图像,如下所示:
sql = "
INSERT INTO fileform
(`FirstName`
,`LastName`
,'IMAGE'
) VALUES ('?', '?', '$fileName')";
mysqli_stmt_bind_param($stmt, "ss", $firstname, $LastName).
在上面代码的第二行,我知道 s-strings、i-integer、b-boolean 等,我使用什么作为图像文件的数据类型?
【问题讨论】:
您应该避免将文件保存到数据库。不要直接将文件保存到数据库,而是使用文件路径。您的列类型将是 varchar 在您直接将值放入查询继续使用准备好的语句之前,您会没事的,我建议您将图像保存在文件系统中并将该图像路径存储到数据库中 将文件移动到某个文件夹/目录,不要将图像存储在数据库中,只需将图像名称存储在数据库中。 请注意,'image' 是一个字符串。也许你在想`image` @SandraChijioke 你必须一次学习一件事。首先,您需要学习如何通过 PHP 使用数据库。只有在那之后,您才能开始处理文件。同时做很多事情对你没有好处。 【参考方案1】:不要将图像存储在数据库中
将图像上传到首选位置并将位置存储在全局变量中。将文件名作为 varchar 存储到数据库中。
上传文件代码:
<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
if(isset($_POST["submit"]))
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
if($check !== false)
echo "File is an image - " . $check["mime"] . ".";
$uploadOk = 1;
else
echo "File is not an image.";
$uploadOk = 0;
?>
【讨论】:
问题不是我应该将图像保存在数据库中吗? 但 OP 明确要求 如何将图像插入数据库? 在上面代码的第二行,我知道 s-strings、i-integer、b-boolean 等,我用什么作为图像文件的数据类型? i> 在这里她要求输入@B001ᛦ 两件事:当文件不是图像时,getimagesize 会发出警告。使用 getimagesize 并不能阻止恶意上传【参考方案2】:您不应该将文件(图像等)上传到数据库! 只需使用常见的php命令上传文件,然后将图像路径和其他信息保存到数据库! 例如,使用 php 上传图片(Name.png)或其他任何文件,该路径(仅示例):
上传/img/Name.png
然后,将该路径保存在数据库中以备后用。
【讨论】:
我认为,常见的数据库实际上是文本库而不是文件!最好阅读此链接:***.com/questions/43268664/…【参考方案3】:您应该不将文件/图像保存在数据库中, 但是您需要将文件上传到您的机器,然后保存文件的路径 作为数据库中的 text 字段,请参阅此链接:https://www.w3schools.com/php/php_file_upload.asp
【讨论】:
问题不是我应该将图像保存在数据库中吗? 但 OP 明确要求 如何将图像插入数据库? @B001ᛦ 当有人问我怎么做错事时,你只是告诉他不要那样做而不是那样做正确的事。 谢谢马吉德。我很感激我会检查你给我的链接以上是关于如何将图像插入数据库[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何在netbeans java中将图像插入mysql数据库