本文實(shí)例講述了PHP實(shí)現(xiàn)上傳圖片到數(shù)據(jù)庫(kù)并顯示輸出的方法。分享給大家供大家參考,具體如下:
創(chuàng)新互聯(lián)公司主要從事網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)株洲,十年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專(zhuān)業(yè),歡迎來(lái)電咨詢(xún)建站服務(wù):18980820575
1.
創(chuàng)建數(shù)據(jù)表
CREATE
TABLE
ccs_image
(
id
int(4)
unsigned
NOT
NULL
auto_increment,
description
varchar(250)
default
NULL,
bin_data
longblob,
filename
varchar(50)
default
NULL,
filesize
varchar(50)
default
NULL,
filetype
varchar(50)
default
NULL,
PRIMARY
KEY
(id)
)engine=myisam
DEFAULT
charset=utf8
2.
用于上傳圖片到服務(wù)器的頁(yè)面
upimage.html
!doctype
html
html
lang="en"
head
meta
charset="UTF-8"
meta
name="viewport"
content="width=device-width,
user-scalable=no,
initial-scale=1.0,
maximum-scale=1.0,
minimum-scale=1.0"
meta
http-equiv="X-UA-Compatible"
content="ie=edge"
style
type="text/css"
*{margin:
1%}
/style
titleDocument/title
/head
body
form
method="post"
action="upimage.php"
enctype="multipart/form-data"
描述:
input
type="text"
name="form_description"
size="40"
input
type="hidden"
name="MAX_FILE_SIZE"
value="1000000"
br
上傳文件到數(shù)據(jù)庫(kù):
input
type="file"
name="form_data"
size="40"br
input
type="submit"
name="submit"
value="submit"
/form
/body
/html
3.
處理圖片上傳的php
upimage.php
?php
if
(isset($_POST['submit']))
{
$form_description
=
$_POST['form_description'];
$form_data_name
=
$_FILES['form_data']['name'];
$form_data_size
=
$_FILES['form_data']['size'];
$form_data_type
=
$_FILES['form_data']['type'];
$form_data
=
$_FILES['form_data']['tmp_name'];
$dsn
=
'mysql:dbname=test;host=localhost';
$pdo
=
new
PDO($dsn,
'root',
'root');
$data
=
addslashes(fread(fopen($form_data,
"r"),
filesize($form_data)));
//echo
"mysqlPicture=".$data;
$result
=
$pdo-query("INSERT
INTO
ccs_image
(description,bin_data,filename,filesize,filetype)
VALUES
('$form_description','$data','$form_data_name','$form_data_size','$form_data_type')");
if
($result)
{
echo
"圖片已存儲(chǔ)到數(shù)據(jù)庫(kù)";
}
else
{
echo
"請(qǐng)求失敗,請(qǐng)重試";
注:圖片是以二進(jìn)制blob形式存進(jìn)數(shù)據(jù)庫(kù)的,像這樣
4.
顯示圖片的php
getimage.php
?php
$id
=2;//
$_GET['id'];
為簡(jiǎn)潔,直接將id寫(xiě)上了,正常應(yīng)該是通過(guò)用戶(hù)填入的id獲取的
$dsn='mysql:dbname=test;host=localhost';
$pdo=new
PDO($dsn,'root','root');
$query
=
"select
bin_data,filetype
from
ccs_image
where
id=2";
$result
=
$pdo-query($query);
$result=$result-fetchAll(2);
//
var_dump($result);
$data
=
$result[0]['bin_data'];
$type
=
$result[0]['filetype'];
Header(
"Content-type:
$type");
echo
$data;
到瀏覽器查看已經(jīng)上傳的圖片,看是否可以顯示
是沒(méi)有問(wèn)題的,證明圖片已經(jīng)以二進(jìn)制的形式存儲(chǔ)到數(shù)據(jù)庫(kù)了
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《php+mysql數(shù)據(jù)庫(kù)操作入門(mén)教程》、《php+mysqli數(shù)據(jù)庫(kù)程序設(shè)計(jì)技巧總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)教程》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
您可能感興趣的文章:php實(shí)現(xiàn)上傳圖片保存到數(shù)據(jù)庫(kù)的方法php上傳圖片存入數(shù)據(jù)庫(kù)示例分享php上傳圖片到指定位置路徑保存到數(shù)據(jù)庫(kù)的具體實(shí)現(xiàn)php中如何將圖片儲(chǔ)存在數(shù)據(jù)庫(kù)里php下將圖片以二進(jìn)制存入mysql數(shù)據(jù)庫(kù)中并顯示的實(shí)現(xiàn)代碼php
從數(shù)據(jù)庫(kù)提取二進(jìn)制圖片的處理代碼php將圖片保存入mysql數(shù)據(jù)庫(kù)失敗的解決方法php將圖片文件轉(zhuǎn)換成二進(jìn)制輸出的方法php圖片的二進(jìn)制轉(zhuǎn)換實(shí)現(xiàn)方法
不要用記事本直接編輯PHP文件,因?yàn)榭赡軙?huì)存在bom頭信息,導(dǎo)致圖片不能正常顯示,你可以自行百度bom頭信息,建議使用編輯器notepad++,可以去除文件bom頭,圖片就會(huì)正常顯示
一般不向數(shù)據(jù)庫(kù)插入圖片 而是插入圖片的src 通過(guò)src找到圖片然后顯示。
?php
session_start();
//array數(shù)組中放圖片的格式
$uptypes = array("image/jpg","image/jpeg","image/png","image/pjpeg","image/gif","image/bmp","image/x-png");
$files =$_FILES["uppic"];
if($files["size"]2097152){ //圖片大小判斷
echo "上傳圖片不能大于2M";
echo "meta http-equiv='REFRESH' CONTENT='1;URL=pic.php'";
exit;
}
$ftype =$files["type"];
if(!in_array($ftype,$uptypes)){ //圖片格式判斷
echo "上傳的圖片文件格式不正確";
echo "meta http-equiv='REFRESH' CONTENT='1;URL=pic.php'";
}
$fname = $files["tmp_name"]; //在服務(wù)器臨時(shí)存儲(chǔ)名稱(chēng)
$image_info = getimagesize($fname);
$name = $files["name"];
$str_name = pathinfo($name); //以數(shù)組的形式返回文件路勁的信息
$extname = strtolower($str_name["extension"]); //把字符串改為小寫(xiě) extensiorn擴(kuò)展名
$upload_dir = "upload/"; //upload文件夾
$file_name = date("YmdHis").rand(1000,9999).".".$extname;
$str_file = $upload_dir.$file_name; //文件目錄
//存入數(shù)據(jù)庫(kù)
$con=mysql_connect("localhost","root","");
if(!$con){
die(("數(shù)據(jù)庫(kù)連接失敗").mysql_error());
}
mysql_select_db("mywork",$con);
$sql="update user set picpath='$str_file' where user_name='$username'"; //將圖片地址插入數(shù)據(jù)庫(kù)mywork
mysql_query($sql,$con);
mysql_close($con);
if(!file_exists($upload_dir)){
mkdir($upload_dir); //創(chuàng)建目錄 成功則返回true 失敗則返回flase
}
if(!move_uploaded_file($files["tmp_name"],$str_file)){ //將上傳的文件移動(dòng)到新的目錄 要移動(dòng)文件和文件新目錄 成功則返回true
echo "圖片上傳失敗";
echo "meta http-equiv='REFRESH' CONTENT='1;URL=插入失敗后希望跳轉(zhuǎn)的頁(yè)面";
}
else{
//echo "img src=".$str_file."";
echo "圖片上傳成功";
echo "meta http-equiv='REFRESH' CONTENT='1;URL=插入成功希望挑戰(zhàn)的頁(yè)面";
}
php 提供數(shù)據(jù), js通過(guò)這些數(shù)據(jù) 畫(huà)統(tǒng)計(jì)圖。 可以用js插件highcharts