一般我們上傳圖片采用的傳統(tǒng)方式是將圖片保存在服務(wù)器本機(jī)文件夾里。這里我就簡(jiǎn)單介紹一下將圖片直接存儲(chǔ)到數(shù)據(jù)庫(kù)里的方法實(shí)現(xiàn)。
mysql數(shù)據(jù)庫(kù)提供了Blob類(lèi)型用于存儲(chǔ)大量數(shù)據(jù),BLOB有四種類(lèi)型,能容納不同大小的數(shù)據(jù)。
TinyBlob 最大 255B
Blob 最大 65K
MediumBlob 最大 16M
LongBlob 最大 4G
需要注意的是:php配置文件本身有對(duì)post 表單數(shù)據(jù)限制大小,也有對(duì)file提交的文件限制大小。故需去php.ini 修改一下
upload_max_filesize=10M(file提交文件大小限制)
post_max_size=10M(表單數(shù)據(jù)大小限制)
我用php做一個(gè)簡(jiǎn)單的注冊(cè)示例。
mysql表的設(shè)計(jì)(字段命名有點(diǎn)不規(guī)范,實(shí)際項(xiàng)目中需要注意一下字段命名規(guī)范)
數(shù)據(jù)庫(kù)連接文件 conn.php
$conn = @mysql_connect('localhost' , 'userName' , 'passWord') or die(mysql_error()); //連接數(shù)據(jù)庫(kù) mysql_query('set names utf8' , $conn); //設(shè)置連接字符集 @mysql_select_db('user' , $conn) or die(mysql_error()); //連接數(shù)據(jù)表
注冊(cè)表單的實(shí)現(xiàn) register.html (選取關(guān)鍵部分)
<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="" οnchange="imgPreview(this)">上傳頭像 </a> </dd> <dd class="email_icon"> <input type="text" placeholder="請(qǐng)輸入注冊(cè)郵箱" name="email" class="login_txtbx"> </dd> <dd class="name_icon"> <input type="text" placeholder="請(qǐng)輸入帳號(hào)昵稱" name="name" class="login_txtbx"> </dd> <dd class="phone_icon"> <input type="tel" placeholder="請(qǐng)輸入聯(lián)系號(hào)碼" name="phone" class="login_txtbx"> </dd> <dd class="school_icon"> <select name="school"> <option value="0">請(qǐng)選擇報(bào)研學(xué)校</option> <option value="1">中南大學(xué)</option> <option value="2">電子科技大學(xué)</option> <option value="3">上海交通大學(xué)</option> <option value="4">華南理工大學(xué)</option> </select> </dd> <dd class="pwd_icon"> <input type="password" placeholder="請(qǐng)輸入您的密碼" name="password" class="login_txtbx"> </dd> <dd class="rpwd_icon"> <input type="password" placeholder="請(qǐng)確認(rèn)您的密碼" class="login_txtbx"> </dd> <dd> <input type="submit" value="立即注冊(cè)" class="submit_btn"> </dd> </dl> </form>
上傳圖片及注冊(cè)頁(yè)面 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()); //執(zhí)行sql語(yǔ)句,若執(zhí)行成功,繼續(xù)下面跳轉(zhuǎn)頁(yè)面。若執(zhí)行失敗,提示錯(cuò)誤信息 header('location:login.php'); //跳轉(zhuǎn)頁(yè)面 exit(); } ?>
需要注意的:
1) php配置文件大小的限制
2) 用form上傳文件時(shí),一定要加上屬性內(nèi)容enctype="multipart/form-data",否則用$_FILES[ 'photo' ] [ ' tmp_name' ] 獲取文件信息時(shí)會(huì)報(bào)異常
推薦教程:PHP視頻教程