WEB页面是用PHP写的,将图片以二进制的方式保存在数据库中,现在要在页面上显示出来,怎么写呢,求高人指教,坐等。
解决方案 »
- 急救php乱码问题
- PHP正则表达式 最近匹配问题 【明天要交!!谢谢各位高手】
- 采集程序应该放在什么地方?
- 特一个问题,朋友们来吧
- 准备应聘LAMP技术支持,需要准备些什么知识点?
- 大家帮看下这是什么论坛程序啊?急
- 关于php 文件下载的问题
- DEDECMS信息分类里如何按某个新添加字段里显示列表,或实现按字母检索
- Eclipse for PHP Developers 无法调试PHP的controller代码
- 碰到诡异问题,求助大能解答,关于表单提交大文件无限数据提交问题
- 急问个php发邮件。公司不支持SMTP,只支持RPC 或者 HTTP Over RPC。如果通过这2个发邮件。
- 关于php生成静态页面的疑惑
<?
header("Content-type: image/gif");//如果是jpeg,bmp等,请替换gif
echo $b;//$b为二进制数据
?>
把图片文件整个都存进Mysql中,其实不是一个解决问题的明智方法——至少我不认为这是明智的。因为数据库的费用远远要大于基本文件存储空间的费用,看看各个空间提供商的价格表你就明白了。另外把图片做为二进制数据存入数据库,使图片几乎没有可以维护的途径,当然你可以删除它——这是数据库的强项!其实这里有一个大家都使用的方法,你完全可以使用:
上传图片到你的服务器空间——这个很简单;
在数据库中只存储一个字符串,来表示这个图片的在你服务器上的路径。这是一个简单的方法,也是通常人都会使用的方法——也是PHPias推荐的方法。当你知道了把图片以二进制存储进Mysql的不足和那个大家都使用的方法之后,你依然决定要把它存进数据库,或者你真的有特殊的需要的话,你可以利用下边的方法把你的图片以二进制方式存进你的昂贵的Mysql。<html>
<head><title>将二进制数据存储进Mysql</title></head>
<body>
<?php
if ($submit) {
//笔者假设你的mysql链接没有问题
//下边的一行代码是问题的关键,我们称他为“A处”,以便下边讲解
$data = addslashes(fread(fopen($form_data, "r"), filesize($form_data)));
$sql="INSERT INTO databasename (bin_data) ".
"VALUES ('$data')";
$result=MYSQL_QUERY($sql);
} else {
?>
<form method="post" action="<?php echo $PHP_SELF; ?>"
enctype="multipart/form-data">
File Description:<br>
<input type="text" name="form_description" size="40">
<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">
<p><input type="submit" name="submit" value="submit">
</form>
<?php
}
?>
</body>
</html>
注释中已经说过,A处代码是关键的地方,我们来翻译一下,
addslashes(fread(fopen($form_data, “r”), filesize($form_data)))
读取整个以只读方式打开的,表单上传上来的文件,并addslashes利用进行转义,这样$data就是一个值为图片二进制代码的变量了,这样就可以想插入其他变量一样插入数据库了。其实也很简单,是不是!问题就是这样,当你找到方法之后,你才发现不过如此而已!