MySQL数据库为BLOB做出的定义如下:BLOB数据类型是一种大型的二进制对象,可以保存可变数量的数据?
成都创新互联专注于企业网络营销推广、网站重做改版、临潭网站定制设计、自适应品牌网站建设、H5高端网站建设、成都做商城网站、集团公司官网建设、成都外贸网站建设公司、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为临潭等各大城市提供网站开发制作服务。
BLOB具有四种类型,分别是TINYBLOB,BLOB, MEDIUMBLOB 和LONGBLOB,区别在于各自所能够保存的最大数据长度不同。
在介绍了所需要使用的数据类型之后,我们可以使用以下语句创建保存图象的数据表。
CREATE TABLE Images ( PicNum int NOT NULL AUTO_INCREMENT PRIMARY KEY, Image BLOB );
在通过程序来实现二进制的转化
其实保存路径是最方便的办法!
直接将图片以二进制流的方式写入到mysql数据库中,由于数据量大,必然会导致服务器的数据库负载很大
我的建议: 采取将图片存储在物理磁盘 将相对路径存储在数据库中 这样会减小数据库负载
附上 "上传图片" 代码:
/// summary
/// 上传图片
/// /summary
/// param name="files"文件框名称/param
/// param name="paths"上传文件路径,url/param
/// param name="fmax"文件的最大值,单位为字节/param
/// param name="ftype"类型:1表示图片;0表示所有文件/param
/// returns/returns
public static string upfiles(System.Web.UI.HtmlControls.HtmlInputFile files, string paths, long fmax, string ftype)
{
//files 文件上传组件的名称;paths 要上传到的目录;fmax是上传文件最大值;ftype是上传文件的类型
//默认上传文件最大值100k,文件类型为所有文件
//1为图片jpg or gif;0为所有文件
//如果文件大于设定值,返回代码0
//如果文件类型错误,返回代码1
//初始化
long fileMax = 100000;
string fileType = "0";
string fileTypet = "";
fileMax = fmax;
fileType = ftype;
if (files.PostedFile.ContentLength fileMax)
{
return "0";
//返回错误代码,结束程序
}
fileTypet = System.IO.Path.GetExtension(files.PostedFile.FileName).ToLower();
if (fileType == "1")
{
if (fileTypet != ".jpg" fileTypet != ".jpeg" fileTypet != ".gif")
{
return "1";
//返回错误代码,结束程序
}
}
string destdir = System.Web.HttpContext.Current.Server.MapPath(paths);
string filename = CFun.RandomWord() + fileTypet;
string destpath = System.IO.Path.Combine(destdir, filename);
//检查是否有名称重复,如果重复就在前面加从0开始的数字
int i = 0;
string tempfilename = filename;
while (System.IO.File.Exists(destpath))
{
//有重复
tempfilename = i.ToString() + filename;
destpath = System.IO.Path.Combine(destdir, tempfilename);
i = i + 1;
}
//没有重复,保存文件
files.PostedFile.SaveAs(destpath);
//返回文件名称
return tempfilename;
}
刚刚写好的,就是PHP保存图片到MYSQL数据库
!--
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)
)
--
HTML
HEAD
TITLE
/TITLE/HEAD
BODY
?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'];
$connect = MYSQL_CONNECT( "localhost", "root","123456" ) or die("不能连接服务器");
mysql_select_db( image) or die("不能连接数据库");
$data = addslashes(fread(fopen($form_data, r), filesize($form_data)));
$result=MYSQL_QUERY("INSERT INTO ccs_image (description,bin_data,filename,filesize,filetype) VALUES ('$form_description','$data','$form_data_name','$form_data_size','$form_data_type')");
$id= mysql_insert_id();
MYSQL_CLOSE();
} else {
?
center
form method=post action=UPload.php enctype=multipart/form-data
文件描述:
br
input type=text name=form_description size=40
br
INPUT TYPE=hidden name=MAX_FILE_SIZE value=1000000
br
!--File to upload/store in database: --
请选择上传文件:
br
input type=file name=form_data size=40
br
input type=submit name=submit value=确定
/form
/center
?php
}
?
/BODY
/HTML
//自己写限制
div class="daohang"
div class="daohang_title"添加大三平面作品/div
li class="ti"
div class="bd"a href="../main_pingmian_1" target="mainFrame"大三作品/a/div
div class="bd"a href="../main_pingmian_2" target="mainFrame"大二作品/a/div
div class="bd"a href="../main_pingmian_3" target="mainFrame"大一作品/a/div
/li
/divdiv class="daohang"
form nname="form1" method="post" action="pm_cheak.php" onSubmit="return jiancha()" enctype="multipart/form-data" //注意 enctype="multipart/form-data一定要有
div class="daohang_title"请认真填写平面作品的资料/div div class="he"
li class="he_1"创作人/li
li class="he_2"input name="pm_zuozhe" type="text" id="pm_zuozhe" value="" size="8" maxlength="4" //li
/div
div class="he"
li class="he_1"span class="lanmu_title"作品说明/span/li
li class="he_2"input name="pm_text" type="text" id="pm_text" value="" size="30" maxlength="30" / 最多可以输入15个汉字或30个字母!/li
/div
div class="he"
li class="he_1"连接地址/li
li class="he_2"input name="pm_href" type="text" id="pm_href" value="" size="30" maxlength="30" /
如:;/li
/div
div class="he"
li class="he_1"作品图片/li
li class="he_2"
label
input type="file" name="pm_images" style="width:220; border:1 solid #6899B7; font-size:9pt; size="14" /label 允许上传文件类型为:jpg|jpeg|png|pjpeg|gif|bmp
/li
/div
div class="he"
li class="he_1"/li
li class="he_2"
label
input type="submit" name="upload" value="提交" /
/label
label
input type="reset" name="button2" id="button2" value="重置"
/label
input name="date" type="hidden" id="date" value=""
/li
/div
/form/div 程序部分pm_cheak.php: ?
include ("../../../../conn.php");
if ($_POST['upload'] == '提交') { $pm_zuozhe = $_POST[pm_zuozhe];
$pm_text = $_POST[pm_text];
$pm_href = $_POST[pm_href];//一一对应 $pm_date = date("Y-m-d"); $link=date("YmjHis"); //获取当前时间
//为表单中提交的数据重新命名,以当前时间和随机数作为名称,其中使用$_FILES获取表单中真实的名称,使用strstr函数获取文件的后缀
$path=$link.mt_rand(1000,9999).strstr($_FILES["pm_images"]["name"],".");
$address="../../../../images/pm_btn/".$path; //定义文件上传的路径
move_uploaded_file($_FILES["pm_images"]["tmp_name"],$address); //将文件上传到指定的文件中
$pm_images="images/pm_btn/".$path; //获取上传文件在服务器中的存储路径
//将表单中提交的数据存储到数据库中 $sql = mysql_query("insert into pm(pm_zuozhe,pm_text,pm_href,pm_images,pm_date)values('$pm_zuozhe','$pm_text','$pm_href','$pm_images','$pm_date')");//执行插入语句
mysql_close($conn);//关闭连接
}
echo ("scriptalert('大三平面作品添加成功');window.location.href='add_pm_zuopin.php';/script");
?
meta http-equiv="Content-Type" content="text/html; charset=GBK" / //注意编码格式
一般都是在数据库中存储照片文件的路径,不会直接把照片文件存储到数据库中。
两种办法:1、以char或varchar类型保存图片的上传路径;2、以blob格式把图片以二进制保存在数据库里。建议用第一种至于用不用PDO,全凭喜好,以MySQL完全可以办到。