php上传多个图片,但上传图片控制数量数量不确定,以二进制形式存入数据库的同一行,如何实现?

天极传媒:天极网全国分站
您现在的位置: >>
用PHP和MySQL保存和输出图片
 ≡谖颐巧杓坪椭谱魍镜墓讨校惺卑淹计4娴绞菘庵幸却娉晌募男问礁臃奖恪\HP和这对黄金组合可以很容易的实现上述功能。在本文中,我们将会向读者介绍如何把到中以及如何将数据库中的显示出来。
设置数据库
  我们通常在数据库中所使用的文本或类型的字段和需要用来保存图片的字段的不同之处就在于两者所需要保存的数据量不同。使用专门的字段来保存大容量的数据,为。
  My为BLOB做出的定义如下:BLOB数据类型是一种大型的二进制对象,可以保存可变数量的数据。BLOB具有四种类型,分别是TINYBLOB,BLOB, MEDIUMBLOB 和LONGBLOB,区别在于各自所能够保存的最大数据长度不同。
  在介绍了所需要使用的数据类型之后,我们可以使用以下语句创建保存图象的数据表。
  CREATE TABLE Images ( PicNum int
NULL AUTO_INCREMENT
, Image BLOB );
编写上传脚本
  关于的上传,我们在这里就不再介绍了,感兴趣的读者可以参见“”内的相关文章。现在,我们主要来看一下如何接收并将其存入到数据库中。具体的脚本代码如下,其中我们假定域的名称为Picture。
$#@60;? ($Picture != "none") { $PSize = filesize($Picture); $mysqlPicture = addslashes(fread(fopen($Picture, "r"), $PSize));_connect($,$username,$password) or die("Unable
to connect to "); @mysql__($db) or die("Unable to
mysql_("INSERT INTO Images (Image) VALUES ($mysqlPicture)") or die("Cant
Perform Query"); } else { " did not upload any picture"; } ?$#@62;
  这样,我们就可以成功的把图片保存到数据库中。如果在将图片插入MySQL的过程中出现问题,可以检查一下所允许的最大数据包的大小。如果设置值过小的话,我们会在数据库的中找到相应的记录。
  下面,我们简单说明一下上述脚本程序。首先,我们通过“If($Picture != "none")”检查是否有文件被上传。然后,使用addslashes()函数避免出现数据格式错误。最后,连接MySQL,选择数据库并插入图片。
  在知道了如何将
入数据库之后,我们就需要考虑怎样才能从数据库中取出图片并在HTML页面中显示出来。这个过程要稍微复杂一些,下面我们就来介绍一下实现过程。
因为显示图片需要发送相应的标头,所以我们就会面临这样一个问题,那就是一次只能显示一副图片,因为我们无法在发出标头之后再发送其它的标头。
为了有效的解决这一问题,我们编写了两个文件。其中,第一个文件作为HTML页面的模板,定位图片的显示位置。第二个文件则被用来从数据库中实际输出文件流,作为$#@60;IMG$#@62;标签的SRC属性。
第一个文件的简单形式可以如下:
$#@60;HTML$#@62; $#@60;BODY$#@62; $#@60;? mysql_connect($host,$username,$password) or die("Unable to connect to "); @mysql_select_db($db) or die("Unable to select ");
$result=mysql_query("SELECT * FROM Images") or die("Cant Perform Query"); While($row=mysql__($result)) { echo "$#@60;IMG SRC=\"Second.? PicNum=$row-$#@62;PicNum\"$#@62;"; } ?$#@62; $#@60;/BODY$#@62; $#@60;/HTML$#@62;
  当HTML页面被浏览时,每显示一副图片就会调用一次Second.php3文件。当第二个文件被调用时会传入相应的Picture ID,我们可以借此从数据库中取回对应的图片并显示。
Second.php3文件如下:
$#@60;? $result=mysql_query("SELECT * FROM Images
PicNum=$PicNum") or die("Cant
perform Query"); $row=mysql_fetch_object($result); Header( "- image/gif");
echo $row-$#@62;I ?$#@62;
  到此,我们就介绍完了使用和MySQL保存和显示图片的全过程。文中所举得都是一些最简单的实例,读者可以根据自己的实际需要加入其它一些功能,使整个程序更加完善。
(作者:吕晓波责任编辑:)
天极新媒体&最酷科技资讯扫码赢大奖
* 网友发言均非本站立场,本站不在评论栏推荐任何网店、经销商,谨防上当受骗!
笔记本手机数码家电php将图片以二进制保存到mysql数据库并显示
我的图书馆
php将图片以二进制保存到mysql数据库并显示
一.存储图片的数据表结构:
--&表的结构&`image`
CREATE&TABLE&IF&NOT&EXISTS&`image`&(
&&`id`&int(3)&NOT&NULL&AUTO_INCREMENT,
&&`name`&varchar(100)&CHARACTER&SET&utf8&NOT&NULL,
&&`pic`&blob&NOT&NULL,
&&`type`&varchar(50)&CHARACTER&SET&utf8&NOT&NULL,
&&`date`&datetime&NOT&NULL,
&&PRIMARY&KEY&(`id`)
)&ENGINE=InnoDB&DEFAULT&CHARSET=latin1&AUTO_INCREMENT=1&;
--&转存表中的数据&`image`
二.php将图片以二进制保存到mysql数据库中:
(1)连接数据库文件:conn.php:
&PHP Code&
$conn&=&mysql_connect('localhost',&'root',&'');
mysql_select_db('study',&$conn);
mysql_query("SET&NAMES&UTF-8");
(2)图片上传并以二进制保存到数据库文件:upload.php
&PHP Code&
include('./conn.php');if&($_POST['submit'])&{
&&&&if&($_FILES['image']['size'])&{
&&&&&&&&$names&=&$_FILES['image']['name'];
&&&&&&&&$arr&&&=&explode('.',&$names);
&&&&&&&&$name&&=&$arr[0];&//图片名称
&&&&&&&&$date&&=&date('Y-m-d&H:i:s');&//上传日期
&&&&&&&&$fp&&&&=&fopen($_FILES['image']['tmp_name'],&'rb');
&&&&&&&&$type&&=&$_FILES['image']['type'];
&&&&&&&&if&(!$fp)&{
&&&&&&&&&&&&showInfo('读取图片失败!');
&&&&&&&&}&else&{
&&&&&&&&&&&&$image&=&addslashes(fread($fp,&filesize($_FILES['image']['tmp_name'])));
&&&&&&&&&&&&if&($image)&{
&&&&&&&&&&&&&&&&$q&&&&&&=&"insert&into&image&(name,&pic,&type,&date)&values&('$name','$image','$type','$date')";
&&&&&&&&&&&&&&&&$result&=&mysql_query($q);
&&&&&&&&&&&&&&&&if&($result)&{
&&&&&&&&&&&&&&&&&&&&showInfo('上传成功!');
&&&&&&&&&&&&&&&&}&else&{
&&&&&&&&&&&&&&&&&&&&showInfo('上传失败!');
&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&}&else&{
&&&&&&&&&&&&&&&&showInfo('请选择要上传的文件!');
&&&&&&&&&&&&}
&&&&}&else&{
&&&&&&&&showInfo('请选择要上传的文件!');
function&showInfo($info)
&&&&echo&"&html&&head&&meta&http-equiv=\"Content-Type\"&content=\"text/&charset=utf-8\"&/&";
&&&&echo&"&meta&http-equiv='refresh'&content='1;url=index.php'&";
&&&&echo&"&/head&";
&&&&echo&"&body&"&.&$info&.&"……&/body&";
&&&&echo&"&/html&";
三.从数据库中读取以二进制保存的图片并显示:image.php
&PHP Code&
include('./conn.php');
$id&&&&&=&$_GET['id'];
$sql&&&&=&"select&*&from&image&where&id='$id'";
$result&=&mysql_query($sql,&$conn);
if&(!$result)
&&&&die("读取图片失败!");
$num&=&mysql_num_rows($result);
if&($num&&&1)
&&&&die("暂无图片");
$data&=&mysql_result($result,&0,&'pic');
$type&=&mysql_result($result,&0,&'type');
mysql_close($id);
Header("Content-type:&$type");
四.上传并显示图片的页面:index.php
&PHP Code&
include('./conn.php');
&!DOCTYPE&html&PUBLIC&"-//W3C//DTD&XHTML&1.0&Transitional//EN"
&&&&&&&"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&
&html&xmlns="http://www.w3.org/1999/xhtml"&lang="en_US"&xml:lang="en_US"&
&*&Created&on&
&*&To&change&the&template&for&this&generated&file&go&to
&*&Window&-&Preferences&-&PHPeclipse&-&PHP&-&Code&Templates
&&meta&http-equive="Content-Type"&content=text/html&charset=utf-8&
&&&title&&&/title&
&&form&method='post'&action='./upload.php'&enctype="multipart/form-data"&
&input&type="file"&name="image"&/&
&input&type="submit"&name="submit"&value="上传"&/&
&!-----------显示图片---------------------&
$ret&=&mysql_query('select&*&from&image&order&by&id&desc');
if&($ret)&{
&&&&while&($row&=&mysql_fetch_array($ret))&{
&td&style='width:170'&
&img&src="image.phpid=&?php&&&&&&&&echo&$row[id];
?&"&&width="170"&height="150"&border="0"&
&div&style='text-align:'&&?php
&&&&&&&&echo&$row['name'];
&&&&&&&&echo&$row['date'];
&!-----------/显示图片---------------------&
TA的最新馆藏[转]&[转]&[转]&[转]&
喜欢该文的人也喜欢[js一点也不难]js+php如何实现上传图片 - 简书
[js一点也不难]js+php如何实现上传图片
近期有一些朋友,在做上传图片这一块的时候进度卡住了。有个朋友说,我已经在这个问题上浪费了一天了。确实,对于新手而言,上传图片成了比较复杂的的一个事,今天整理了一下常用的两种方式,让新手轻松掌握上传图片的小难题。
(一)form表单上传
这种方式简单暴力,如果没有特殊需求,数据和图片一次性处理的时候,这种方式,最合适不过。
前端的代码:
&form action="upload" method="post" enctype="multipart/form-data"&
&input type="file" name="pic" /&
&input type="submit" value="上传" /&
action 请求的后端方法
enctype="multipart/form-data" 在使用包含文件上传控件的表单时,必须使用该值。
后端的代码:
public function upload(){
// 获取上传的图片
$pic = $_FILES['pic']['tmp_name'];
$upload_ret =
// 上传的路径,建议写物理路径
$uploadDir = 'static/upload';
// 创建文件夹
if(!file_exists($uploadDir)){
mkdir($uploadDir, 0777);
// 用时间戳来保存图片,防止重复
$targetFile = $uploadDir . '/' . time() . $_FILES['pic']['name'];
// 将临时文件 移动到我们指定的路径,返回上传结果
$upload_ret = move_uploaded_file($pic, $targetFile) ? true :
return $upload_
简单的一个form表单上传文件就搞定了!
(二)ajax 无刷新上传图片
传统的form表单提交会导致页面刷新,但是在有些情况下,我们不希望页面被刷新,这种时候我们都是使用ajax的方式进行请求的。
很多人肯定会想到JQuery的ajax操作,但是这样的做法是没用的,因为只能传递一般的参数,文件是无法上传的。这个时候 有一个叫做FormData的东西的出现拯救了我们
关于FormData
XMLHttpRequest Level 2添加了一个新的接口FormData,利用FormData对象,我们可以通过JavaScript用一些键值对来模拟一系列表单控件,我们还可以使用XMLHttpRequest的send()方法来异步的提交这个"表单"。比起普通的ajax,使用FormData的最大优点就是我们可以异步上传一个二进制文件。 所有主流浏览器的较新版本都已经支持这个对象了,比如Chrome 7+、Firefox 4+、IE 10+、Opera 12+、Safari 5+。
原生的XMLHttpRequest 实现
前端的代码:
&input type="file" name="pic" id="pic"/&
&input type="button" onClick="upload()" value="上传" /&
function upload(){
// 请求的后端方法
var url="upload";
// 获取文件
var pic = document.getElementById('pic').files[0];
// 初始化一个 XMLHttpRequest 对象
var xhr = new XMLHttpRequest();
// 初始化一个 FormData 对象
var form = new FormData();
// 携带文件
form.append("pic", pic);
//开始上传
xhr.open("POST", url, true);
//在readystatechange事件上绑定一个事件处理函数
xhr.onreadystatechange=
xhr.send(form);
function callback() {
if(xhr.readyState == 4){
if(xhr.status == 200){
if(xhr.responseText == 1){
alert('添加成功');
window.location.reload();
alert("添加失败");
后端代码:如方法一,不变。
JQuery + FormData 实现
其实JQuery也是可以操作的,不过老版本不支持,所以建议使用2.0及更新版本。
&form id= "upload_form"&
指定文件名:&input type="text" name="filename" /&
上传文件:&input type="file" name="file"/&
&input type="button" value="上传" onclick="upload()" /&
function upload(){
var form = new FormData($("#upload_form")[0]);
url:'upload',
type:'POST',
data:form,
success:function (result){
alert(result);
error:function (result){
alert(result);
后端代码:如方法一,不变。
无刷新的上传图片功能,也轻松的搞定了!
一般根据业务选择对应的方式来实现,文章里面主要是告诉大家如何实现,一些细节处理,还是需要大家自己去处理。如有疑问或者建议,都可以联系我。
飞鱼科技WEB,擅长PHP,与君共勉。
SF:/u/anonymous66
GITHUB:/null-man

我要回帖

更多关于 qq每日上传图片数量 的文章

 

随机推荐