php实现上传图片到数据库

本文介绍了如何使用PHP将图片存储到MySQL数据库的Blob类型字段中,包括TinyBlob、Blob、MediumBlob和LongBlob四种类型的选择。通过一个简单的注册表单示例,展示了上传图片并处理的过程,同时提到了php配置文件的upload_max_filesize和post_max_size限制,以及form表单上传文件时必须设置enctype属性的重要性。文章内容还包括数据库表设计和部分代码片段,但未涵盖从数据库读取并输出图片的内容。

一般我们上传图片采用的传统方式是将图片保存在服务器本机文件夹里。这里我就简单介绍一下将图片直接存储到数据库里的方法实现。

mysql数据库提供了Blob类型用于存储大量数据,BLOB有四种类型,能容纳不同大小的数据。

TinyBlob 最大 255B
Blob 最大 65K
MediumBlob 最大 16M
LongBlob 最大 4G

需要注意的是:php配置文件本身有对post 表单数据限制大小,也有对file提交的文件限制大小。故需去php.ini 修改一下

upload_max_filesize=10M(file提交文件大小限制)    

post_max_size=10M(表单数据大小限制)


我用php做一个简单的注册示例。

mysql表的设计(字段命名有点不规范,实际项目中需要注意一下字段命名规范)



数据库连接文件 conn.php

$conn = @mysql_connect('localhost' , 'userName' , 'passWord') or die(mysql_error()); //连接数据库
mysql_query('set names utf8' , $conn); //设置连接字符集
@mysql_select_db('user' , $conn) or die(mysql_error()); //连接数据表


注册表单的实现   register.html (选取关键部分)

<form action="register.php" method="post"  enctype="multipart/form-data">
	<dl class="admin_login">
		<dd class="pic">
			<img src="img/5.png" alt="" id="preview"/>
			<a href="javascript:;" class="a-upload">
				<input type="file" name="photo" id="" onchange="imgPreview(this)">上传头像
			</a>
		</dd>
		<dd class="email_icon">
			<input type="text" placeholder="请输入注册邮箱" name="email" class="login_txtbx">
		</dd>
		<dd class="name_icon">
			<input type="text" placeholder="请输入帐号昵称" name="name" class="login_txtbx">
		</dd>
		<dd class="phone_icon">
			<input type="tel" placeholder="请输入联系号码" name="phone" class="login_txtbx">
		</dd>
		<dd class="school_icon">
			<select name="school">
				<option value="0">请选择报研学校</option>
				<option value="1">中南大学</option>
				<option value="2">电子科技大学</option>
				<option value="3">上海交通大学</option>
				<option value="4">华南理工大学</option>
			</select>
		</dd>
		<dd class="pwd_icon">
			<input type="password" placeholder="请输入您的密码" name="password" class="login_txtbx">
		</dd>
		<dd class="rpwd_icon">
			<input type="password" placeholder="请确认您的密码" class="login_txtbx">
		</dd>
		<dd>
			<input type="submit" value="立即注册" class="submit_btn">
		</dd>
	
	</dl>
</form>


上传图片及注册页面  register.php

<?php
	require('conn.php');
		
	if(empty($_POST)){
		require('register.html');
	}else{			  
		$image = mysql_real_escape_string(file_get_contents($_FILES['photo']['tmp_name'])); //获取图片
		$image_type = $_FILES['photo']['type']; //获取图片格式
		$user_name = $_POST['name'];
		$user_email = $_POST['email'];
		$user_phone = $_POST['phone'];
		$user_school = $_POST['school'];
		$password = $_POST['password'];

		$sqlstr = "insert into user(uname,email,phone,password,school,photo,type) values('".$user_name."','".$user_email."','".$user_phone."','".$password."','".$user_school."','".$image."','".$image_type."')";  
		  
		@mysql_query($sqlstr) or die(mysql_error()); //执行sql语句,若执行成功,继续下面跳转页面。若执行失败,提示错误信息  
    		header('location:login.php'); //跳转页面
		exit();  			
	}
?>  


在此,一个简单的图片上传到数据库的操作就完成了。


需要注意的:

1) php配置文件大小的限制    

2) 用form上传文件时,一定要加上属性内容enctype="multipart/form-data",否则用$_FILES[ 'photo' ] [ ' tmp_name' ] 获取文件信息时会报异常(Filename cannot be empty in...)



后续更新读取数据库中的图片并输出。

未完,待续。


评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值