php上传多张图片
1. php将post过来的$_FILES多张图片同时保存在同一个文件夹
if(!isset($_FILES['userfile'])){
echo "失败";
}else{
//文件夹不存在则创建文件夹(文件夹路径:$dirname)
if (!file_exists($dirname){
mkdir($dirname);
}
$max_files=5; //设置最多上传文件的个数
//遍历图片并存放至文件夹(图片文件集合$src)
for($i=0;$i<$max_files;$i++){
//如果没出错
if($_FILES['userfile']['error'][$i]==0){
//设置完整存放路径+文件名
$file_path=$dirname. "/" .$_FILES['userfile']['name'][$i];
//图片正常读写就存放至文件夹
if (@fopen($src,'r')){
file_put_contents($file_path, $_FILES['userfile']);
}
}
}
}
2. php 如何实现图片上传前预览,并且有多个图片上传和预览
<form name="form4" id="form4" method="post" action="#"> <input type="file" name="file4" id="file4" ōnchange="preview4()" /> <img id="pic4" src="" alt="图片在此显示" width="120"/> </form> <scrīpt type="text/javascrīpt"> function preview4(){ var x = document.getElementById("file4"); var y = document.getElementById("pic4"); if(!x || !x.value || !y) return; var patn = /\.jpg$|\.jpeg$|\.gif$/i; if(patn.test(x.value)){ y.src = "file://localhost/" + x.value; } else{ alert("您选择的似乎不是图像文件。"); } } </scrīpt>
3. input file用了multiple属性,而且选择了多张图片,PHP该怎么上传
其实就那两个函数x0dx0ais_uploaded_file()和move_uploaded_file()x0dx0a是循环上传的。你打印下$_FILES这个超全局数组就明白了。下面我的测试代码上传图片的:x0dx0ax0dx0ax0dx0a
x0dx0a x0dx0a";x0dx0aif(move_uploaded_file($_FILES['images']['tmp_name'][$k],$save)){x0dx0aecho "上传成功!";x0dx0a}x0dx0a}x0dx0a}x0dx0aecho "
";x0dx0aprint_r($_FILES);x0dx0aecho "";x0dx0a}x0dx0ax0dx0a?>
4. 怎样用php实现上传图片到数据库
php实现上传图片保存到数据库的方法。具体分析如下:
php 上传图片,一般都使用move_uploaded_file方法保存在服务器上。但如果一个网站有多台服务器,就需要把图片发布到所有的服务器上才能正常使用(使用图片服务器的除外)
如果把图片数据保存到数据库中,多台服务器间可以实现文件共享,节省空间。
首先图片文件是二进制数据,所以需要把二进制数据保存在mysql数据库。
mysql数据库提供了BLOB类型用于存储大量数据,BLOB是一个二进制对象,能容纳不同大小的数据。
BLOB类型有以下四种,除存储的最大信息量不同外,其他都是一样的。可根据需要使用不同的类型。
TinyBlob 最大 255B
Blob 最大 65K
MediumBlob 最大 16M
LongBlob 最大 4G
数据表photo,用于保存图片数据,结构如下:
CREATETABLE`photo`(
`id`int(10)unsignedNOTNULLauto_increment,
`type`varchar(100)NOTNULL,
`binarydata`mediumblobNOTNULL,
PRIMARYKEY(`id`)
)ENGINE=MyISAMDEFAULTCHARSET=latin1AUTO_INCREMENT=1;
upload_image_todb.php代码如下:
<?php
//连接数据库
$conn=@mysql_connect("localhost","root","")ordie(mysql_error());
@mysql_select_db('demo',$conn)ordie(mysql_error());//判断action
$action=isset($_REQUEST['action'])?$_REQUEST['action']:'';
//上传图片
if($action=='add'){
$image=mysql_escape_string(file_get_contents($_FILES['photo']['tmp_name']));
$type=$_FILES['photo']['type'];
$sqlstr="insertintophoto(type,binarydata)values('".$type."','".$image."')";
@mysql_query($sqlstr)ordie(mysql_error());
header('location:upload_image_todb.php');
exit();
//显示图片
}elseif($action=='show'){
$id=isset($_GET['id'])?intval($_GET['id']):0;
$sqlstr="select*fromphotowhereid=$id";
$query=mysql_query($sqlstr)ordie(mysql_error());
$thread=mysql_fetch_assoc($query);
if($thread){
header('content-type:'.$thread['type']);
echo$thread['binarydata'];
exit();
}
}else{
//显示图片列表及上传表单
?>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<metahttp-equiv="content-type"content="text/html;charset=utf-8">
<title>uploadimagetodbdemo</title>
</head>
<body>
<formname="form1"method="post"action="upload_image_todb.php"enctype="multipart/form-data">
<p>图片:<inputtype="file"name="photo"></p>
<p><inputtype="hidden"name="action"value="add"><inputtype="submit"name="b1"value="提交"></p>
</form>
<?php
$sqlstr="select*fromphotoorderbyiddesc";
$query=mysql_query($sqlstr)ordie(mysql_error());
$result=array();
while($thread=mysql_fetch_assoc($query)){
$result[]=$thread;
}
foreach($resultas$val){
echo'<p><img
src="upload_image_todb.php?action=show&id='.$val['id'].'&t='.time().'"
width="150"></p>';
}
?>
</body>
</html>
<?php
}
?>
程序运行截图和数据库截图:
5. PHP后台新闻图片的添加
一般来说,新闻后台管理系统的新闻内容都是用的【富文本编辑器】
在编辑内容的过程中,用ajax方式将图片异步传到服务器上并返回地址,再在文本框中使用html的img把标签把图片显示出来
整个富文本的内容,先将html实体转换成字符串加以储存,整个文章内容在数据库中以字符串形式储存,读出来的时候将字符串转义为html实体,先可以显示出自定义的文本样式了
由于内容是字符串,所以上传一张图片和上传多张图片对于一篇文章来说是无差别的
扩展
富文本编辑器会根据你的操作,用html标签来保存你的排版信息,你看起来是在编辑一段文字,实际上富文本编辑器已经暗地里把格式转换成了html代码
6. thinkPHP3.2.3文件上传类多张图片上传怎么只有第一张图片被上传
可以遍历传过来的FILES数组,然后用循环调用UPLOAD类
public function upload(){
$upload = new \Think\Upload();// 实例化上传类
$upload->maxSize = 2000000 ;// 设置附件上传大小
$upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类
$upload->rootPath = ''./Uploads/';
$upload->savePath = date('Y').'/'.date('m').'/'.date('d').'/';
$upload->subName = array('date', 'H');
$upload->saveName = md5(uniqid());
$info = $upload->upload();
if(!$info) { // 上传错误提示
$this->error($upload->getError());
}else{ // 上传成功
return $info;
//$this->success('上传成功!');
}
}
//调用
foreach($_FILES["banner_index"]["size"] as $key=>$val){
if($val>0){
$info=$this->upload(); //判断上传文件大小大于0,调用upload
foreach($info as $v){
echo $v["savepath"].$v["savename"]; }
}
}
7. thinkphp 多图上传,如何把图片路径保存到数据库
关于上传文件:
推荐使用插件Uploadify!
使用方法:http://www.uploadify.com/documentation/
下载地址:http://www.uploadify.com/download/
关于多图上传:
在客户端定义一个js变量,用于缓存每次异步上传图片路径;
最后提交表达数据的时候就把这些路径集合保存到数据库即可!