选择显示字体大小

怎样在mysql中直接储存图片


  如果你想把二进制的数据,比如说图片文件和html文件,直接保存在你的mysql数据库,那么这篇文章就是为你而写的!我将告诉你怎样通过html表单来储存这些文件,怎样访问和使用这些文件。
本文概述:

mysql中建立一个新的database
首先,你必须在你的mysql中建立一个新的数据库,我们将会把那些二进制文件储存在这个数据库里。在例子中我会使用下列结构,为了建立数据库,你必须做下列步骤:

一个怎样储存文件的例子程序 用这个例子你可以通过html表单将文件传输到数据库中。.

store.php3

<?php

// store.php3 - by florian dittmer <dittmer@gmx.net>
?>

<html>
<head><title>store binary data into sql database</title></head>
<body>

<?php
// 如果提交了表单,代码将被执行:

if (&#36;submit) {

// 连接到数据库
// (你可能需要调整主机名,用户名和密码)

mysql_connect( &quot;localhost&quot;, &quot;root&quot;, &quot;password&quot;);
mysql_select_db( &quot;binary_data&quot;);

&#36;data = addslashes(fread(fopen(&#36;form_data,  &quot;r&quot;), filesize(&#36;form_data)));

&#36;result=mysql_query( &quot;insert into binary_data (description,bin_data,filename,filesize,filetype) &quot;.
&quot;values ('&#36;form_description','&#36;data','&#36;form_data_name','&#36;form_data_size','&#36;form_data_type')&quot;);

&#36;id= mysql_insert_id();
print  &quot;<p>this file has the following database id: <b>&#36;id</b>&quot;;

mysql_close();

} else {

// 否则显示储存新数据的表单
?>

<form method=&quot;post&quot; action=&quot; <?php echo &#36;php_self; ?>&quot; enctype=&quot;multipart/form-data&quot;>
file description:<br>
<input type=&quot;text&quot; name=&quot;form_description&quot; size=&quot;40&quot;>
<input type=&quot;hidden&quot; name=&quot;max_file_size&quot; value=&quot;1000000&quot;>
<br>file to upload/store in database:<br>
<input type=&quot;file&quot; name=&quot;form_data&quot; size=&quot;40&quot;>
<p><input type=&quot;submit&quot; name=&quot;submit&quot; value=&quot;submit&quot;>
</form>

<?php

}

?>

</body>
</html>

如果你执行了这个程序,你将会看见一个简单的html表单,单击“浏览”选择一个文件,然后单击提交。

当文件上传至web服务器之后,程序将会告诉你刚刚上传的文件的id,记住这个id,待会要用的。

一个怎样访问文件的例子程序

你可以通过这个程序访问你刚才储存的文件

<?php

// getdata.php3 - by florian dittmer <dittmer@gmx.net>
// 调用方法: getdata.php3?id=<id>

if(&#36;id) {

// 你可能需要调整主机名,用户名和密码:
@mysql_connect( &quot;localhost&quot;, &quot;root&quot;, &quot;password&quot;);

@mysql_select_db( &quot;binary_data&quot;);

&#36;query =  &quot;select bin_data,filetype from binary_data where id=&#36;id&quot;;
&#36;result = @mysql_query(&#36;query);

&#36;data = @mysql_result(&#36;result,0, &quot;bin_data&quot;);
&#36;type = @mysql_result(&#36;result,0, &quot;filetype&quot;);

header(  &quot;content-type: &#36;type&quot;);
echo &#36;data;

};
?>

程序必须知道要访问那个文件, 你必须将id作为一个参数。
例如:
一个文件在数据库中的id为2. 你可以这样调用它:
getdata.php3?id=2
如果你将图片储存在数据库里, 你可以向调用图片一样调用它。
example:
一个图片文件在数据库中的id为3. 你可以这样调用它:
<img src=&quot;getdata.php3?id=3&quot;>

怎样储存大于1mb的文件:

如果你想储存大于1mb的文件,你必须对你的程序、php设置、sql设置进行许多修改,。
下面几条也许可以帮助你储存小于24mb的文件:

  1. 修改 store.php3 ,将 max_file_size 的值改成 24000000
  2. 修改你的php设置,在一般情况下,php只允许小于2mb的文件,你必须将max_filesize(在php.ini中)的值改成24000000
  3. 去掉mysql的数据包大小限制,在一般情况下 mysql 小于1 mb的数据包.
  4. 你必须用以下参数重启你的mysql
    /usr/local/bin/safe_mysqld -o key_buffer=16m -o table_cache=128 -o sort_buffer=4m -o record_buffer=1m -o max_allowed_packet=24m

如果仍然出错:
可能是超时错误,如果你通过一个很慢的连接来储存一个很大的文件,php缺省的时间限制为30秒。
你可以将max_execution_time(在php.ini中)的值改为-1

  


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons