在如今这个数字化的时代,我们已经习惯了使用图片来丰富我们的内容和体验。 在许多应用程序中,需要向 服务器 上传图像并存储它们以便与其他用户共享或将其用于以后。 许多初学者可能会感到困惑,不知道如何将图片上传到服务器并将其存储到数据库中。 本文将介绍如何使用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.”;
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
接下来,我们需要编写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>“.$row[‘title’].”
Created on “.$row[‘created’].”
结论
本文介绍了如何将图像上传到服务器并将相关信息存储到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格式的图片)!
请返回重新选择图片!’;
$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);
//检测当前上传文件扩展名是否合法。
if (!$this->checkuplod($type)) {
$this->last_error = “允许上传文件类型: .”.$type.” 您上传的文件名: “.$name;
$this->halt($this->last_error);
//检测当前上传文件是否非法提交。
if(!is_uploaded_file($tmpname)) {
$this->last_error = “文件非法提交. 您上传的文件名: “.$name;
$this->halt($this->last_error);
//移动文件后,重命名文件用。
$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);
//存储当前文件的有关信息,以便其它程序调用。
$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;
return true;
* 检测用户提交文件类型是否合法
* @access private
* @return boolean 如果为true说明类型合法,反之不合法
function checkType($extension) {
foreach ($this->allow_type as $type) {
//print_r($type);
//print_r($extension);
$str=substr($extension,strrpos($extension,’.’)+1);
//echo $str;
if (strcasecmp($str, $type) == 0)
return true;
return false;
function checkuplod($extension) {
foreach ($this->allow_type as $type) {
//print_r($type);
//print_r($extension);
//$str=substr($extension,strrpos($extension,’.’)+1);
//echo $str;
if (strcasecmp($extension, $type) == 0)
return true;
return false;
* 显示出错信息
* @param $msg 要显示的出错信息
* @access private
function halt($msg) {
printf(” %s\n”, $msg);
* 取文件扩展名
* @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);
//格式为: Array
// => Array(
// => example.txt
// => j:/tmp/example.txt
//获得文件保存路径或者其他的信息
for ($jeff_upload_success_num = 0; $jeff_upload_success_num “;
//print_r($tmp);
$q_sql =>香港服务器首选树叶云,2H2G首月10元开通。树叶云(shuyeidc.com)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。
如何在sql2005数据库的mdf文件里存入图片
1楼的正解,我们做软件都是把图片转换成2进制,然后再用二进制形式读出来的但是这个听起来比较麻烦,我做网站喜欢把图片的路径写成varchar存进数据库,然后从数据库中把图片的路径读出来,这样比较方便,纯粹个人经验·-·
SQL 2005怎么样存入一张图片!
如果你要放图片在数据库时在的话,字段类型设置为image,然后把图片以二进制的方式放进去就可以了,如果只是存放一个图片路径的话,就简单了,直接把图片地址放进去就可以了如果你是做上传的话,你可以先把图片上传到指定目录,然后按目录+图片名.后缀名的形式保存就可以了
[数据库类]readdir后要把该文件夹所有的图片insert进数据库要怎么做 - PHP进阶讨论
刚刚看PDO看到的前提是要使用pdo~~Inserting an image into a databaseThis example opens up a file and passes the file handle to PDO to insert it as a LOB. PDO will do its best to get the contents of the file up to the database in the most efficient manner possible. [ol][*]prepare(\insert into images (id, contenttype, imagedata) values (?, ?, ?)\);[*]$id = get_new_id(); // some function to allocate a new ID[*][*]// assume that we are running as part of a file upload form[*]// You can find more information in the PHP documentation[*][*]$fp = fopen($_FILES[\file\][\tmp_name\], \rb\);[*][*]$stmt->bindParam(1, $id);[*]$stmt->bindParam(2, $_FILES[\file\][\type\]);[*]$stmt->bindParam(3, $fp, PDO_PARAM_LOB);[*][*]$stmt->execute();[*]?>??[/ol]
发表评论