如何将图片上传并存储到数据库中? (上传几个图片存入数据库中)

在如今这个数字化的时代,我们已经习惯了使用图片来丰富我们的内容和体验。 在许多应用程序中,需要向服务器上传图像并存储它们以便与其他用户共享或将其用于以后。 许多初学者可能会感到困惑,不知道如何将图片上传到服务器并将其存储到数据库中。 本文将介绍如何使用PHP和MySQL将图片上传并存储到数据库中。

之一步:设置上传表单

在HTML中设置上传表单,并确保使用的属性和值适用于您的应用程序的需求。 在表单中,我们需要一个文件上传字段和一个提交按钮。 代码示例如下:

“`

“`

第二步:上传图片

当表单提交时,需要处理上传的文件并将其保存到服务器中。 PHP提供了一种内置函数`move_uploaded_file`,可以将上传的文件移动到指定的目录中。 以下代码演示如何使用此函数将文件保存到服务器中:

“`

if(isset($_POST[‘submit’])) {

$name = $_FILES[‘image’][‘name’];

$target_dir = “uploads/”;

$target_file = $target_dir . basename($_FILES[“image”][“name”]);

if (move_uploaded_file($_FILES[“image”][“tmp_name”], $target_file)) {

echo “The file “. basename( $_FILES[“image”][“name”]). ” has been uploaded.”;

} else {

echo “Sorry, there was an error uploading your file.”;

}

}

“`

在上面的代码中,我们首先获取上传文件的名字,并创建一个名为“uploads”的目录用于存储上传的文件。 然后,我们使用`move_uploaded_file`函数将上传的文件保存到服务器的“uploads”目录中。

第三步:将图片信息存储到数据库中

我们已经成功上传了图像,并将其保存到服务器上。 接下来,我们需要将相关的信息存储到数据库中。 以下是在MySQL中创建存储图像信息的表的示例代码:

“`

create table images (

id int(11) auto_increment primary key,

title varchar(200) not null,

image varchar(200) not null,

created datetime

);

“`

在上面的代码中,我们创建了一个名为“images”的表,用于存储上传的图像的信息,包括ID,图像名称,路径和创建日期。

接下来,我们需要编写SQL查询来将上传的图像信息存储到表中。 以下代码演示如何将上传的图像信息存储到我们创建的表中:

“`

if(isset($_POST[‘submit’])) {

$title = $_POST[‘title’];

$image = $_FILES[‘image’][‘name’];

// image file directory

$target_dir = “uploads/”;

// get image extension

$image_extension = strtolower(pathinfo($target_dir . $image,PATHINFO_EXTENSION));

// valid image extensions

$extensions_arr = array(“jpg”,”jpeg”,”png”,”gif”);

// check if uploaded file extension is a valid image extension

if( in_array($image_extension, $extensions_arr) ){

// insert record into database

$query = “INSERT INTO images(title,image,created) VALUES(‘$title’,’$target_dir$image’,now())”;

mysqli_query($con,$query);

// move the uploaded image to uploads directory

move_uploaded_file($_FILES[‘image’][‘tmp_name’],$target_dir.$image);

}

}

“`

在上面的代码中,我们首先从上传的表单中获取标题和图像的名称。 然后,我们使用`strtolower`函数获取图像的扩展名并将其存储在变量`$image_extension`中。 接下来,我们创建一个名为“extensions_arr”的数组,用于存储有效的图像扩展名。 我们使用`in_array`函数检查上传的文件扩展名是否为有效图像扩展名之一。 如果是,我们使用INSERT查询向表中插入新记录,并指定标题,图像路径和创建日期。 我们使用`move_uploaded_file`函数将上传的文件移动到服务器上。

第四步:在网页上显示上传的图像

我们已经成功地将图像上传并将其相关信息存储到数据库中。 接下来,我们需要从数据库中检索图像信息,并在网页上呈现它们。 以下是将在网页上显示上传的图像的PHP代码:

“`

// connect to database

$con = mysqli_connect(“localhost”,”username”,”password”,”database”);

// get records from the database

$query = “SELECT * FROM images ORDER BY id DESC”;

$result = mysqli_query($con,$query);

while($row = mysqli_fetch_array($result)){

echo “

“;

echo “

“.$row[‘title’].”

“;

echo ““;

echo “

Created on “.$row[‘created’].”

“;

echo “

“;

}

?>

“`

在上述代码中,我们首先使用`mysqli_connect`函数连接到MySQL数据库。 然后,我们使用SELECT查询从“images”表中检索记录,并按ID倒序排序。 接下来,我们使用`mysqli_fetch_array`函数循环遍历结果集,并在网页上呈现每个记录的标题,图像和创建日期。

结论

本文介绍了如何将图像上传到服务器并将相关信息存储到MySQL数据库中。 实际上,此过程并不难,但需要一些编程技能和经验。 了解此过程的原理将有助于您更好地了解Web开发的工作原理。希望这篇文章对您有帮助。

相关问题拓展阅读:

用aspupload如何同时上传两张图片,并以新命名的方式把路径保存到数据库?求高手解决?

ajax异步。

图1图2分别异步提交图片到后台。新名字的话也是后台备姿派处理的。图片存在空间里,把图片名存在数据库里。输出图片名到前台

前台图1图2后面可分别设一个隐藏的 input 用来ajax返回各自的图片名。

总的提交按仿贺钮只提交隐藏的input即可。(input里是图片名,可同时提交多个input)

暂无图片在之一次加载html时加载。每一次ajax上传图片除了返回图片名到对应的input外,还同时js动册饥态输出新img标签代替对应的暂无图片,新img标签要写好完整的图片地址。

asp中如何上传多图片并保存到数据库中的不同字段.

无建议

求php同时上传两张图片并根据时间存入数据库!根据下面的代码来修改!

先占个位置!看电视先。等等没人的话就来!

这么晚了,我就说一种比较简单的方法。

首先你要在html页面上修改

Send these files:

//也就是多个input 你觉得不美观的可以通过js控制,甚至可以生产缩略图这样页面效果更好 可是不在问题之内嘿嘿

//开始该php页面 ,文件判定包括后缀名大小你好像都有了 这样其实就很简单的了 其实只要知道 $_FILES是一个数组就会的,一个处理和两个一样。因为你没给html代码 userfile具体指什么看我的html代码

for($i=0;$i上传错误!为了保证浏览速度,系统只允许上传小于150Kb的图片!

请您将图片压缩、裁剪后再上传,或者返回重新选择图片;’;

}elseif($file_chk==12){

$error=’上传的图片类型必须是: .gif、.jpg、.png格式!

‘;

}elseif($file_chk==13){

$error=’上传错误无效的图片文件!

‘;

}elseif(!$file_chk){

$error=’上传错误!您没有上传图片(请上传.gif、.jpg、.png格式的图片)!

请返回重新选择图片!’;

}else{

$posttime=time();

$content=’Merry+Christmas+and+Happy+New+Year+2023.’;

$filename=”uploadfile/”.$up_date.”/”.$file_chk;

$db->query(“insert into cdb_santa set picurl=’$filename’,content=’$content’,posttime=’$posttime'”);

$id=$db->insert_id();

$chk=true;

}

}}

刚没仔细看你的php,我这么写应该还是有问题的,

你确定你这段语句没错$file_chk=uploadfile(“FileUpload”,”uploadfile/”.$up_date.”/”,$_SERVER,150000,’jpg|gif|png’);??

这个方法应该是用来检测上传的图片的你什么也输入进去他怎么检查啊 比如文件类型文件大小 文件名字!!!!如果是你自己写的方法请贴上来看看我好改 如果是别人的方法也请贴上来

我给你个简单的吧 这个可以实现三个一起上传 这个是我自己用的 做了点调整

uploadCore.php 页面代码

user_name_u = $uname;

//$this->user_name_y = $utype;

$this->user_post_file = $file;

$this->save_file_path = $path;

$this->max_file_size = $size; //如果用户不填写文件大小,则默认为2M.

if ($type != ”)

$this->allow_type = $type;

}

/**

* 存储用户上传文件,检验合法性通过后,存储至指定位置。

* @access public

* @return int 值为0时上传失败,非0表示上传成功的个数。

*/

function upload() {

for ($i = 0; $i user_post_file); $i++) {

//如果当前文件上传功能,则执行下一步。

if ($this->user_post_file == 0) {

//取当前文件名、临时文件名、大小、扩展名,后面将用到。

$userty = $this->user_name_y;

$uuname = $this->user_name_u;

$name = $this->user_post_file;

$tmpname = $this->user_post_file;

$size = $this->user_post_file;

$mime_type = $this->user_post_file;

$type = $this->getFileExt($this->user_post_file);

//检测当前上传文件大小是否合法。

if (!$this->checkSize($size)) {

$this->last_error = “这个文件的大小太大了. 您上传的文件名: “.$name;

$this->halt($this->last_error);

continue;

}

//检测当前上传文件扩展名是否合法。

if (!$this->checkuplod($type)) {

$this->last_error = “允许上传文件类型: .”.$type.” 您上传的文件名: “.$name;

$this->halt($this->last_error);

continue;

}

//检测当前上传文件是否非法提交。

if(!is_uploaded_file($tmpname)) {

$this->last_error = “文件非法提交. 您上传的文件名: “.$name;

$this->halt($this->last_error);

continue;

}

//移动文件后,重命名文件用。

$basename = $this->getBaseName($name, “.”.$type);

//移动后的文件名

$saveas = $basename.”-“.time().”.”.$type;

//$saveas = $basename.”.”.$type;

//组合新文件名再存到指定目录下,格式:存储路径 + 文件名 + 时间 + 扩展名

$this->final_file_path = $this->save_file_path.”/”.$saveas;

if(!move_uploaded_file($tmpname, $this->final_file_path)) {

$this->last_error = $this->user_post_file;

$this->halt($this->last_error);

continue;

}

//存储当前文件的有关信息,以便其它程序调用。

$this->save_info = array(“uname” => $uuname,”name” => $name, “type” => $type,

“mime_type” => $mime_type,

“size” => $size, “saveas” => $saveas,

“path” => $this->final_file_path);

}

}

return count($this->save_info); //返回上传成功的文件数目

}

/**

* 返回一些有用的信息,以便用于其它地方。

* @access public

* @return Array 返回最终保存的路径

*/

function getSaveInfo() {

return $this->save_info;

}

/**

* 检测用户提交文件大小是否合法

* @param Integer $size 用户上传文件的大小

* @access private

* @return boolean 如果为true说明大小合法,反之不合法

*/

function checkSize($size) {

if ($size > $this->max_file_size) {

return false;

}

else {

return true;

}

}

/**

* 检测用户提交文件类型是否合法

* @access private

* @return boolean 如果为true说明类型合法,反之不合法

*/

function checkType($extension) {

foreach ($this->allow_type as $type) {

//echo “”;

//print_r($type);

//print_r($extension);

$str=substr($extension,strrpos($extension,’.’)+1);

//echo $str;

//exit();

if (strcasecmp($str, $type) == 0)

return true;

}

return false;

}

function checkuplod($extension) {

foreach ($this->allow_type as $type) {

//echo “”;

//print_r($type);

//print_r($extension);

//$str=substr($extension,strrpos($extension,’.’)+1);

//echo $str;

//exit();

if (strcasecmp($extension, $type) == 0)

return true;

}

return false;

}

/**

* 显示出错信息

* @param $msg 要显示的出错信息

* @access private

*/

function halt($msg) {

printf(” %s
\n”, $msg);

exit();

}

/**

* 取文件扩展名

* @param String $filename 给定要取扩展名的文件

* @access private

* @return String 返回给定文件扩展名

*/

function getFileExt($filename) {

$stuff = pathinfo($filename);

return $stuff;

}

/**

* 取给定文件文件名,不包括扩展名。

* eg: getBaseName(“j:/hexuzhong.jpg”); //返回 hexuzhong

*

* @param String $filename 给定要取文件名的文件

* @access private

* @return String 返回文件名

*/

function getBaseName($filename, $type) {

$basename = basename($filename, $type);

return $basename;

}

}

?>

调用和使用方法

$tmp=$Form;

require (‘uploadCore.php’);

//设置允许用户上传的文件类型。

$type = array(‘gif’, ‘jpg’, ‘png’, ‘zip’, ‘rar’, ‘txt’);

//实例化上传类,之一个参数为用户上传的文件组、第二个参数为存储路径、

//第三个参数为文件更大大小。如果不填则默认为2M

//第四个参数为充许用户上传的类型数组。如果不填则默认为gif, jpg, png, zip, rar, txt, doc, pdf

$upload = new UploadFile($user_upload_file,$user_name, $pathy,, $type);

//print””;

//print_r($upload);

//上传用户文件,返回int值,为上传成功的文件个数。

$num = $upload->upload();

if ($num != 0) {

//echo “上传成功
“;

$jeff_upload_info=$upload->getSaveInfo();

//取得文件的有关信息,文件名、类型、大小、路径。用print_r()打印出来。

//print_r($jeff_upload_info);

//print””;

//print_r($jeff_upload_info);

//exit();

//格式为: Array

// (

// => Array(

// => example.txt

// => txt

// => 526

// => j:/tmp/example.txt

//)

// )

//获得文件保存路径或者其他的信息

for ($jeff_upload_success_num = 0; $jeff_upload_success_num “;

//print_r($tmp);

$q_sql = data_insert($tmp,’hczb_zzwd’);//插入数据库类

//print_r($q_sql);

//$jeff_upload_success_url = “\r\n”.’‘.$jeff_upload_info.”;

//$jeff_upload_success_img .= $jeff_upload_success_url; //获得代码

}

if($q_sql)

{

echo “window.location.href=’third.php’;”;

$_SESSION = 3;

}

else

{

echo “alert(‘sorry,操作失败’);window.location.href=’third.php’;”;;

}

//echo $num.”个文件上传成功”;

}

else {

echo “alert(‘sorry,上传失败,允许上传的格式是:'”.$type.””);window.location.href=’third.php’;”;

}

表单调用:

附件序号

附件名称

附件说明

附件一

附件二

附件三

有哪里不明白的 M我 告诉你

uploadfile自定义函数应只能处理单张图片上传吧?

上传错误!为了保证浏览速度,系统只允许上传小于150Kb的图片!

请您将图片压缩、裁剪后再上传,或者返回重新选择图片;’;

}elseif($file_chk==12){

$error=’上传的图片类型必须是: .gif、.jpg、.png格式!

‘;

}elseif($file_chk==13){

$error=’上传错误无效的图片文件!

‘;

}elseif(!$file_chk){

$error=’上传错误!您没有上传图片(请上传.gif、.jpg、.png格式的图片)!

请返回重新选择图片!’;

}else{

$posttime=time();

$content=’Merry+Christmas+and+Happy+New+Year+2023.’;

$filename=”uploadfile/”.$up_date.”/”.$file_chk;

//你原来的SQL有错,应是这样

$db->query(“insert into cdb_santa(picurl,content,posttime) values(‘$filename’,’$content’,’$posttime’)”);

$id=$db->insert_id();

$chk=true;

}

}

}

?>

我觉得这个问题不难解决,在收到的$file中判断一下是否是数组,如果是加一个循环就可以了

上传几个图片存入数据库中的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于上传几个图片存入数据库中,如何将图片上传并存储到数据库中?,用aspupload如何同时上传两张图片,并以新命名的方式把路径保存到数据库?求高手解决?,asp中如何上传多图片并保存到数据库中的不同字段.,求php同时上传两张图片并根据时间存入数据库!根据下面的代码来修改!的信息别忘了在本站进行查找喔。


数据运维技术 » 如何将图片上传并存储到数据库中? (上传几个图片存入数据库中)