仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2080|回复: 8
打印 上一主题 下一主题

[学习教程] MSSQL教程之将图片贮存在MySQL数据库里

[复制链接]
灵魂腐蚀 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:21:16 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
InnoDB事务型数据库的首选引擎,支持ACID事务,支持行级锁定<pstyle="TEXT-INDENT:2em">假如你想把二进制的数据,好比说图片文件和HTML文件,间接保留在你的MySQL数据库,那末这篇文章就是为你而写的!我将告知你如何经由过程HTML表单来贮存这些文件,如何会见和利用这些文件。<pstyle="TEXT-INDENT:2em">本文概述:<pstyle="TEXT-INDENT:2em">。在mysql中创建一个新的数据库<pstyle="TEXT-INDENT:2em">。一个如何贮存文件的例子程序<pstyle="TEXT-INDENT:2em">。一个如何会见文件的例子程序<pstyle="TEXT-INDENT:2em">在mysql中创建一个新的database<pstyle="TEXT-INDENT:2em">起首,你必需在你的mysql中创建一个新的数据库,我们将会把那些二进制文件贮存在这个数据库里。在例子中我会利用以下布局,为了创建数据库,<pstyle="TEXT-INDENT:2em">你必需做以下步骤:<pstyle="TEXT-INDENT:2em">。进进MySql把持器<pstyle="TEXT-INDENT:2em">。输出命令"createdatabasebinary_data;"<pstyle="TEXT-INDENT:2em">。输出命令"usebinary_data;"<pstyle="TEXT-INDENT:2em">。输出命令<pstyle="TEXT-INDENT:2em">"CREATETABLEbinary_data(idINT(4)<pstyle="TEXT-INDENT:2em">NOTNULLAUTO_INCREMENTPRIMARYKEY,<pstyle="TEXT-INDENT:2em">descriptionCHAR(50),bin_dataLONGBLOB,<pstyle="TEXT-INDENT:2em">filenameCHAR(50),filesizeCHAR(50),<pstyle="TEXT-INDENT:2em">filetypeCHAR(50));"(不克不及断行)<pstyle="TEXT-INDENT:2em">假如没成心外,数据库和表应当创建好了。<pstyle="TEXT-INDENT:2em">一个如何贮存文件的例子程序<pstyle="TEXT-INDENT:2em">用这个例子你能够经由过程Html表单将文件传输到数据库中。<pstyle="TEXT-INDENT:2em">store.php3<pstyle="TEXT-INDENT:2em">//store.php3-byFlorianDittmer<pstyle="TEXT-INDENT:2em">?><pstyle="TEXT-INDENT:2em">//假如提交了表单,代码将被实行:<pstyle="TEXT-INDENT:2em">if($submit){<pstyle="TEXT-INDENT:2em">//毗连到数据库<pstyle="TEXT-INDENT:2em">//(你大概必要调剂主机名,用户名和暗码)<pstyle="TEXT-INDENT:2em">MYSQL_CONNECT("localhost","root","password");<pstyle="TEXT-INDENT:2em">mysql_select_db("binary_data");<pstyle="TEXT-INDENT:2em">$data=addslashes(fread(fopen($form_data,"r"),filesize($form_data)));<pstyle="TEXT-INDENT:2em">$result=MYSQL_QUERY("INSERTINTObinary_data(description,bin_data,filename,filesize,filetype)<pstyle="TEXT-INDENT:2em">[接上一行:]VALUES($form_description,$data,$form_data_name,<pstyle="TEXT-INDENT:2em">$form_data_size,$form_data_type)");<pstyle="TEXT-INDENT:2em">$id=mysql_insert_id();<pstyle="TEXT-INDENT:2em">print"<pstyle="TEXT-INDENT:2em">ThisfilehasthefollowingDatabaseID:$id";<pstyle="TEXT-INDENT:2em">MYSQL_CLOSE();<pstyle="TEXT-INDENT:2em">}else{<pstyle="TEXT-INDENT:2em">//不然显现贮存新数据的表单<pstyle="TEXT-INDENT:2em">?><pstyle="TEXT-INDENT:2em">}?>



<pstyle="TEXT-INDENT:2em">假如你实行了这个程序,你将会瞥见一个复杂的Html表单,单击“扫瞄”选择一个文件,然后单击提交。<pstyle="TEXT-INDENT:2em">当文件上传至web服务器以后,程序将会告知你方才上传的文件的ID,记着这个ID,待会要用的。<pstyle="TEXT-INDENT:2em">一个如何会见文件的例子程序<pstyle="TEXT-INDENT:2em">你能够经由过程这个程序会见你方才贮存的文件<pstyle="TEXT-INDENT:2em">//getdata.php3-byFlorianDittmer<pstyle="TEXT-INDENT:2em">//挪用办法:getdata.php3?id=<pstyle="TEXT-INDENT:2em">if($id){<pstyle="TEXT-INDENT:2em">//你大概必要调剂主机名,用户名和暗码:<pstyle="TEXT-INDENT:2em">@MYSQL_CONNECT("localhost","root","password");<pstyle="TEXT-INDENT:2em">@mysql_select_db("binary_data");<pstyle="TEXT-INDENT:2em">$query="selectbin_data,filetypefrombinary_datawhereid=$id";<pstyle="TEXT-INDENT:2em">$result=@MYSQL_QUERY($query);<pstyle="TEXT-INDENT:2em">$data=@MYSQL_RESULT($result,0,"bin_data");<pstyle="TEXT-INDENT:2em">$type=@MYSQL_RESULT($result,0,"filetype");<pstyle="TEXT-INDENT:2em">Header("Content-type:$type");<pstyle="TEXT-INDENT:2em">echo$data;<pstyle="TEXT-INDENT:2em">};<pstyle="TEXT-INDENT:2em">?><pstyle="TEXT-INDENT:2em">程序必需晓得要会见谁人文件,你必需将ID作为一个参数。<pstyle="TEXT-INDENT:2em">比方:一个文件在数据库中的ID为2.你能够如许挪用它:<pstyle="TEXT-INDENT:2em">getdata.php3?id=2<pstyle="TEXT-INDENT:2em">假如你将图片贮存在数据库里,你能够向挪用图片一样挪用它。<pstyle="TEXT-INDENT:2em">Example:一个图片文件在数据库中的ID为3.你能够如许挪用它:<pstyle="TEXT-INDENT:2em">如何贮存年夜于1MB的文件:<pstyle="TEXT-INDENT:2em">假如你想贮存年夜于1MB的文件,你必需对你的程序、PHP设置、SQL设置举行很多修正,。<pstyle="TEXT-INDENT:2em">上面几条大概能够匡助你贮存小于24MB的文件:<pstyle="TEXT-INDENT:2em">1、修正store.php3,将MAX_FILE_SIZE的值改成24000000。<pstyle="TEXT-INDENT:2em">2、修正你的PHP设置,在一样平常情形下,PHP只同意小于2MB的文件,你必需将max_filesize(在php.ini中)的值改成24000000<pstyle="TEXT-INDENT:2em">3、往失落MYSQL的数据包巨细限定,在一样平常情形下MYSQL小于1MB的数据包.<pstyle="TEXT-INDENT:2em">4、你必需用以下参数重启你的MYSQL<pstyle="TEXT-INDENT:2em">/usr/local/bin/safe_mysqld-Okey_buffer=16M-Otable_cache=128-Osort_buffer=4M-Orecord_buffer=1M-Omax_allowed_packet=24M<pstyle="TEXT-INDENT:2em">5、假如仍旧堕落:多是超时毛病,假如你经由过程一个很慢的毗连来贮存一个很年夜的文件,PHP缺省的工夫限定为30秒。你能够将max_execution_time(在php.ini中)的值改成-1。

支持多线程,充分利用CPU资源
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-6 02:51

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表