我为什么不能把图片上传到MYSQL数据库里面? 不是的。 wasy(嘻嘻哈哈)你试过把图片上传到数据库里吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 下面是我在數據庫中一個紀錄的圖片字段copy出來的一部分:?JFIF``C %# , #&')*)-0-(0%()(C (((((((((((((((((((((((((((((((((((((((((((((((((((;" ?濊|gu列oC暑?giv箤潳t烸毴辍]晝n蟳*济'嶓篳凼wZ€甡R?@?á巎錃*?E!&NS腆zc`[pИ讵佬暈?C{Fy????l慬'F塝:[@?序?Λ歡c5觴?7?quot;0+wQㄐ薄藁b2狢画?睬cE塚EFG俌?{?amp;?9TWR浨砏:瓌欞?!{ǘ`M\揑庴G/03??jc?$?$?餉gP?5V丞晈 ?氺?烜@瀱磘蔛譳#g?quot;糙?霼J頙*SSmC'7澭s傞?c鎸?Hb嘗`孭D2穥貀Gvǘ驪b莄蟱﹑深蜢h }`仄g檪 )`琒k糾T魊n&H?佱蔘缍?~cWx?橌臎宰.z遈?襋蘵XcoT枚J乖惀St Y?辚戌衧fs燁0綟k6^桹樿?羯?瑿6=悿?'[2H??J2╕樷衩楣狠鲂o<虴詶,褗谋?UJ湓%t罎Nw蒘~刴猍会'?c?骲1]^M?B晚靤湩4?U鬨柟襀Y1?猌?t埀SX?睈pX浆莥樑j徤W??┻徧?殜?妼%3A髎xfy2皕緂n 89蚫霒ea?3苖?轿U%?k 腲栊鱯??z氘窃?gt;賺v眒O]?8残if?? i烛笵tA?gt;鮪-昚3 冐臐OG鑭s灖w=肥j匝臍劒軪I>xo榢hm墼UKj沀y|?樿?Y襪諞?O汋∵NtgC萾#敘肰j?汿@?K??塤焟,璠'?吽&:揓#?U?gt;^b%彥绾Sx,?quot;毊却礬謜E味鍔2掮(Y欐?を簹;醘Er項珚r= H$椅砈畼F(峯蛙;c?恤|?amp;r挸屍唌!甉Q鮆专諸?垵P螶?珮鱺爿羱謩闖q{?^繜9膘販霒'櫣楄|罌8鋆鞪穄??诖y睢?kkc旈梀焉世筺L€?26睯u 43嚮U努?儥`k衃?v諰RiP@兛L伢铉蟯藵2D妒祎Nqo骨@荀?E螽s7[?芥褛駣=或?{H呟7KK熝2€a?pャ::7?"?A莇叔腡fe鱏D#瘣跰瑂.Kq貗゜某o8錶 漌豵;珶够壺泗:)B啮难e?gt;]瞬?6槩﹙荐X;xZU?j@d??秄) = ?魒?棘謞uy5患捯廟?爝ヅ隖GM-鷸X駍菏?屛麙w逩澯2竆o喣鹘/+-L鼲洿;8?詹u阁7襢|疟w仙桎陃|黶vseeNT} p?quot;鹕]? }^N蕁€?_g@颛栩;~}?贗y]疏Ze〥J〡踦嶭?冥d涞瓁q邙?xw嬜巛锈w壍簖b/屲鐠o 鎦鑌w伃US&?秠龑栆?amp;0鑛F.浾Mw5?商戳Iv?噘D夿愦h髧眺?俜袌?G8|牾St颉???冸o^p~;?lt;%毑徵Y靬艻罭=/"/C?F橸EP跊m埡7Z伍\╱$1T鋯矧??}?殕滻滯?'/ο●p4螙6廷轒漸驳T?Ajヨ蛓_[拯?m?"竇;Tf+旈yF鍦s=_"NfM潲?amp;髷6杤餛??N焉1杻E,?賤J牝?筈O汝?勹骫//A寻 ?醦萫蹿药:敵4odx? X竇7<&l秹?S蚗ⅹ\HUy╓险r?h貓逃^~唥洑??)i鬘癛鐹泧椆t﹢!5酬腞]撔r垅琺?尕K堉^=????NM盺=蛣0?,@簕亭裝Ρ噡g梙怅z?滋9)?应戡核u~標3硧Y?代V苐#U畜歑F5畧s"h? ]揄滜晭挒[bV盤癹*?什6芒y縢舃鲹舸7O萶0T?玕?佪`:!tq祑?礈緾少?KrOiT? 賨tl犴屠#i!)t峌蛍+w該嚦?B时3?Ob漂b孬?IeueG樹 HRi???鬂g 喝{q﨏隵,I挭妿u蛠譨硘>?7,cr4鱽4厼u潁傝eFⅹd雈w?綡q櫄v?筗萔缧驔幸蟁鴲4窠7]o }_ヨ`ky炴湬!P嗜J?<禋2肚靳>/娥紧8廾弚憎?lt;垩A? \1?移?仳F船?s甩秄6ㄙ彼龁?rヶ笶悾樒僸&奻K陼睩匚?夰.7?lt;顺莻I艚{勽?賺摕4廵W刭鋲唊訞挟_垍鑌ョ/T驋f}誨陏緥芀??c勺善?+FJO?镻@鑗鮳?{??7 阂?Vy< j^G<甸Sr?晍邼鮏鏡]轒鈣?据樋=裬ΧIオx??c?Y岖ф=3k?lt;?虹尺絍p邬綗&?擉t眣?ixgd漤e斩哸z?膍Qicw洔HY;犗珍鮈0m.mFw>>OCQ编?/]蓗嫕?逷D鵡ま+1??艷L&袜y??iX韈裇偕托騗 De菎鬔隭+??+J??J祉&鏣桸??涾=撐魿{宠晰?汝鵒U蚷2(經o堫<譏$?:W3iQ屷?灖9?gt;℃?(刷棩酤}輞幥?L?lt;悳憉.郧7砧e杂z杦頊峟脂浲?;?-謆菇l7G;Aa?虌A賔y??o镻ggq~?躼у?3I$蔛V?Z駗鐒?甇洋映垂蕖鋧7=蜝赉覶??焨kY??3.........好恐怖呀 先建一個數據庫binary_data,然後執行下面語句:CREATE TABLE binary_data ( id int(4) NOT NULL auto_increment, description varchar(50), bin_data longblob, filename varchar(50), filesize varchar(50), filetype varchar(50), PRIMARY KEY (id));再用你程序試一試。反正在我的機器上很成功!如果還不行,估計就是你的php配置有問題了嘻嘻...... 从库中取出图片后还有用一定方法显示我这有一篇文章希望对你有帮助:)//////////////////////////////////// 在我们设计和制作网站的过程中,有时把图片保存到数据库中要比存成文件的形式更加方便。PHP和MySQL这对黄金组合可以很容易的实现上述功能。在本文中,我们将会向读者介绍如何把图片保存到MySQL数据库中以及如何将数据库中的图片显示出来。设置数据库 我们通常在数据库中所使用的文本或整数类型的字段和需要用来保存图片的字段的不同之处就在于两者所需要保存的数据量不同。MySQL数据库使用专门的字段来保存大容量的数据,数据类型为BLOB。 MySQL数据库为BLOB做出的定义如下:BLOB数据类型是一种大型的二进制对象,可以保存可变数量的数据。BLOB具有四种类型,分别是TINYBLOB,BLOB, MEDIUMBLOB 和LONGBLOB,区别在于各自所能够保存的最大数据长度不同。 在介绍了所需要使用的数据类型之后,我们可以使用以下语句创建保存图象的数据表。 CREATE TABLE Images ( PicNum int NOT NULL AUTO_INCREMENT PRIMARY KEY, Image BLOB ); 编写上传脚本 关于如何实现文件的上传,我们在这里就不再介绍了,感兴趣的读者可以参见“网页陶吧”内的相关文章。现在,我们主要来看一下如何接收上传文件并将其存入到MySQL数据库中。具体的脚本代码如下,其中我们假定文件上传域的名称为Picture。<? If($Picture != "none") { $PSize = filesize($Picture); $mysqlPicture = addslashes(fread(fopen($Picture, "r"), $PSize)); mysql_connect($host,$username,$password) or die("Unable to connect to SQL server"); @mysql_select_db($db) or die("Unable to select database"); mysql_query("INSERT INTO Images (Image) VALUES '($mysqlPicture')") or die("Can't Perform Query"); } else { echo"You did not upload any picture"; } ?> 这样,我们就可以成功的把图片保存到数据库中。如果在将图片插入MySQL的过程中出现问题,可以检查一下MySQL数据库所允许的最大数据包的大小。如果设置值过小的话,我们会在数据库的错误日志中找到相应的记录。 下面,我们简单说明一下上述脚本程序。首先,我们通过“If($Picture != "none")”检查是否有文件被上传。然后,使用addslashes()函数避免出现数据格式错误。最后,连接MySQL,选择数据库并插入图片。显示图片 在知道了如何将图片存入数据库之后,我们就需要考虑怎样才能从数据库中取出图片并在HTML页面中显示出来。这个过程要稍微复杂一些,下面我们就来介绍一下实现过程。因为PHP显示图片需要发送相应的标头,所以我们就会面临这样一个问题,那就是一次只能显示一副图片,因为我们无法在发出标头之后再发送其它的标头。为了有效的解决这一问题,我们编写了两个文件。其中,第一个文件作为HTML页面的模板,定位图片的显示位置。第二个文件则被用来从数据库中实际输出文件流,作为<IMG>标签的SRC属性。第一个文件的简单形式可以如下:<HTML> <BODY> <? mysql_connect($host,$username,$password) or die("Unable to connect to SQL server"); @mysql_select_db($db) or die("Unable to select database"); $result=mysql_query("SELECT * FROM Images") or die("Can't Perform Query"); While($row=mysql_fetch_object($result)) { echo "<IMG SRC=\"Second.php3? PicNum=$row->PicNum\">"; } ?> </BODY> </HTML> 当HTML页面被浏览时,每显示一副图片就会调用一次Second.php3文件。当第二个文件被调用时会传入相应的Picture ID,我们可以借此从数据库中取回对应的图片并显示。Second.php3文件如下:<? $result=mysql_query("SELECT * FROM Images WHERE PicNum=$PicNum") or die("Can't perform Query"); $row=mysql_fetch_object($result); Header( "Content-type: image/gif"); echo $row->Image; ?> 到此,我们就介绍完了使用PHP和MySQL保存和显示图片的全过程。文中所举得都是一些最简单的实例,读者可以根据自己的实际需要加入其它一些功能,使整个程序更加完善。 /////////////////////具体我倒没试过,你试试吧,但愿有用! wasy(嘻嘻哈哈)我知道一定是我的PHP配置有问题,我不知道怎么配置,你是怎么配置的?能教教我吗?naomaomao(孬毛毛)谢谢你的跟贴。我的本地机是能上传图片的,但到了生产机哪里就不行了,我把本地机的PHP目录完整地拷贝到生产机的目录下,然后还把PHP.INI文件也复制过去,可就是不行,这到底是怎么一回事?我还没试过LINUX下面运行。谁能帮帮我呀? 估計是iis不行吧,你用apache試一試嘛 上面的程序在本地机器是能够运行的,本地机器的环境是:Apache,Win2000,Php+Mysql但是在网络上好象是没有用的,(能够存储在数据库中,但是在显示的时候却不能显示)我问过我们的网站空间提供商,他们的管理员说图片在出来的时候,是能够显示的,但是他们说我的格式错误。真不知道什么问题。我在本地机器“Word,Flash,image等等”都能存储,也能显示! php.ini文件里的upload_tmp_dir需要iis的用户有读写权限此文件在%systemroot%下。这行:upload_tmp_dir = C:\PHP\uploadtemp ; temporary directory for HTTP uploaded files (will use system 这种程序如何实现 substr()、strlen()、mb_substr()、mb_strlen()、iconv_substr()、iconv_strlen()的区别是什么? php如何包含文件? 急问:CURL取得COOKIE的问题!!!!!!!!!!!!!! php网站外包 是不是非要安装邮箱系统才能用PHP发邮件? 散分,见者有份 各位大虾帮忙忙吧,谢谢拉 我想了解一下editplus是否有这样的功能! 小女子这厢有礼啦 请问“@”的作用? 为何没有session_start时用session_regist也会在服务器上生成session文件啊??
好恐怖呀
CREATE TABLE binary_data (
id int(4) NOT NULL auto_increment,
description varchar(50),
bin_data longblob,
filename varchar(50),
filesize varchar(50),
filetype varchar(50),
PRIMARY KEY (id)
);
再用你程序試一試。
反正在我的機器上很成功!
如果還不行,估計就是你的php配置有問題了嘻嘻......
////////////////////////////////////
在我们设计和制作网站的过程中,有时把图片保存到数据库中要比存成文件的形式更加方便。PHP和MySQL这对黄金组合可以很容易的实现上述功能。在本文中,我们将会向读者介绍如何把图片保存到MySQL数据库中以及如何将数据库中的图片显示出来。设置数据库
我们通常在数据库中所使用的文本或整数类型的字段和需要用来保存图片的字段的不同之处就在于两者所需要保存的数据量不同。MySQL数据库使用专门的字段来保存大容量的数据,数据类型为BLOB。 MySQL数据库为BLOB做出的定义如下:BLOB数据类型是一种大型的二进制对象,可以保存可变数量的数据。BLOB具有四种类型,分别是TINYBLOB,BLOB, MEDIUMBLOB 和LONGBLOB,区别在于各自所能够保存的最大数据长度不同。 在介绍了所需要使用的数据类型之后,我们可以使用以下语句创建保存图象的数据表。
CREATE TABLE Images ( PicNum int NOT NULL AUTO_INCREMENT PRIMARY KEY, Image BLOB ); 编写上传脚本
关于如何实现文件的上传,我们在这里就不再介绍了,感兴趣的读者可以参见“网页陶吧”内的相关文章。现在,我们主要来看一下如何接收上传文件并将其存入到MySQL数据库中。具体的脚本代码如下,其中我们假定文件上传域的名称为Picture。<? If($Picture != "none") { $PSize = filesize($Picture); $mysqlPicture = addslashes(fread(fopen($Picture, "r"), $PSize)); mysql_connect($host,$username,$password) or die("Unable to connect to SQL server"); @mysql_select_db($db) or die("Unable to select database"); mysql_query("INSERT INTO Images (Image) VALUES '($mysqlPicture')") or die("Can't Perform Query"); } else { echo"You did not upload any picture"; } ?> 这样,我们就可以成功的把图片保存到数据库中。如果在将图片插入MySQL的过程中出现问题,可以检查一下MySQL数据库所允许的最大数据包的大小。如果设置值过小的话,我们会在数据库的错误日志中找到相应的记录。 下面,我们简单说明一下上述脚本程序。首先,我们通过“If($Picture != "none")”检查是否有文件被上传。然后,使用addslashes()函数避免出现数据格式错误。最后,连接MySQL,选择数据库并插入图片。显示图片
在知道了如何将图片存入数据库之后,我们就需要考虑怎样才能从数据库中取出图片并在HTML页面中显示出来。这个过程要稍微复杂一些,下面我们就来介绍一下实现过程。因为PHP显示图片需要发送相应的标头,所以我们就会面临这样一个问题,那就是一次只能显示一副图片,因为我们无法在发出标头之后再发送其它的标头。为了有效的解决这一问题,我们编写了两个文件。其中,第一个文件作为HTML页面的模板,定位图片的显示位置。第二个文件则被用来从数据库中实际输出文件流,作为<IMG>标签的SRC属性。第一个文件的简单形式可以如下:<HTML> <BODY> <? mysql_connect($host,$username,$password) or die("Unable to connect to SQL server"); @mysql_select_db($db) or die("Unable to select database"); $result=mysql_query("SELECT * FROM Images") or die("Can't Perform Query"); While($row=mysql_fetch_object($result)) { echo "<IMG SRC=\"Second.php3? PicNum=$row->PicNum\">"; } ?> </BODY> </HTML> 当HTML页面被浏览时,每显示一副图片就会调用一次Second.php3文件。当第二个文件被调用时会传入相应的Picture ID,我们可以借此从数据库中取回对应的图片并显示。Second.php3文件如下:<? $result=mysql_query("SELECT * FROM Images WHERE PicNum=$PicNum") or die("Can't perform Query"); $row=mysql_fetch_object($result); Header( "Content-type: image/gif"); echo $row->Image; ?> 到此,我们就介绍完了使用PHP和MySQL保存和显示图片的全过程。文中所举得都是一些最简单的实例,读者可以根据自己的实际需要加入其它一些功能,使整个程序更加完善。 /////////////////////具体我倒没试过,你试试吧,但愿有用!
谢谢你的跟贴。我的本地机是能上传图片的,但到了生产机哪里就不行了,我把本地机的PHP目录完整地拷贝到生产机的目录下,然后还把PHP.INI文件也复制过去,可就是不行,这到底是怎么一回事?我还没试过LINUX下面运行。谁能帮帮我呀?
本地机器的环境是:Apache,Win2000,Php+Mysql
但是在网络上好象是没有用的,(能够存储在数据库中,但是在显示的时候却不能显示)我问过我们的网站空间提供商,他们的管理员说图片在出来的时候,是能够显示的,但是他们说我的格式错误。真不知道什么问题。
我在本地机器“Word,Flash,image等等”都能存储,也能显示!
此文件在%systemroot%下。
这行:
upload_tmp_dir = C:\PHP\uploadtemp ; temporary directory for HTTP uploaded files (will use system