PHP如何实现多张图片上传功能
导读:本文共2958.5字符,通常情况下阅读需要10分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 首先要知道这个函数move_uploaded_file();接下来是我们的input框,和我们的html页面这里我们是增加的input框我们也可以写写一个属性 multiple="multiple" 这样就可以ctrl多选图片了<html><head><title>多个文件上传表单</title&g... ...
音频解说
目录
(为您整理了一些要点),点击可以直达。首先要知道这个函数
move_uploaded_file();
接下来是我们的input框,和我们的html页面
这里我们是增加的input框我们也可以写写一个属性 multiple="multiple" 这样就可以ctrl多选图片了
<html><head><title>多个文件上传表单</title></head><body><style>form{margin:20px;padding:10px;}#picInput>input{display:block;margin:10px;}</style><formaction="pic.php"method="post"enctype="multipart/form-data"><inputtype="hidden"name="MAX_FILE_SIZE"value="1000000"><divid="picInput">上传图片:<inputtype="file"name='myfile[]'></div><inputid="addBtn"type="button"onclick="addPic1()"value="继续添加图片"><br/><br/><inputtype="submit"value="上传文件"></form><script>functionaddPic1(){varaddBtn=document.getElementById('addBtn');varinput=document.createElement("input");input.type='file';input.name='myfile[]';varpicInut=document.getElementById('picInput');picInut.appendChild(input);if(picInut.children.length==3){addBtn.disabled='disabled';}}</script></body></html>
PHP向后台插入图片方法和之前不一样了。
<metacharset="UTF-8"><?php$dbhost='localhost:3306';//mysql服务器主机地址$dbuser='root';//mysql用户名$dbpass='root';//mysql用户名密码$conn=mysqli_connect($dbhost,$dbuser,$dbpass);if(!$conn){die('连接失败:'.mysqli_error($conn));}//设置编码,防止中文乱码mysqli_query($conn,"setnamesutf8");mysqli_select_db($conn,'image');$file=$_FILES['myfile'];//得到传输的数据,以数组的形式$name=$file['name'];//得到文件名称,以数组的形式$upload_path="img/";//上传文件的存放路径//当前位置foreach($nameas$key=>$names){//foreach将$name也就是我们所有图片的name的键值对输出,/**strtolower()将内容转为小写,*substr()方法可在字符串中抽取从start下标开始的指定数目的字符。这个是获取我们name的最后一的路径。要抽取的子串的起始下标。必须是数值。如果是负数,那么该参数声明从字符串的尾部开始算起的位置。也就是说,-1指字符串中最后一个字符***/$type=strtolower(substr($names,strrpos($names,'.')+1));//得到文件类型,并且都转化成小写$allow_type=array('jpg','jpeg','gif','png');//定义允许上传的类型//把非法格式的图片去除if(!in_array($type,$allow_type)){//检测图片后缀是否正确unset($name[$key]);//函数,参数为name的值也就是图片的name值。}}$str='';//空字符串foreach($nameas$key=>$item){//获取图片的时间;$type=strtolower(substr($item,strrpos($item,'.')+1));//得到文件类型,并且都转化成小写if(move_uploaded_file($file['tmp_name'][$key],$upload_path.time().$name[$key])){$str.=','.$upload_path.time().$name[$key];//将图片拼接一个当前时间}else{//echo'错误';}}//向指定id插入图片地址(虽然是插入,但是是更新字段,不要迷糊了)$uid=1;//格式$str=substr($str,1);//最后的值给$str然后将内容插入数据库$sql="INSERTINTOimg"."(name)"."VALUES"."('$str')";$retval=mysqli_query($conn,$sql);if(!$retval){die('无法插入数据:'.mysqli_error($conn));}echo"数据插入成功";mysqli_close($conn);?>
插入成功之后然后读取,和之前也不一样。我们要分解字段,然后将我们的图片循环输出出来。
<metacharset="UTF-8"><style>.image{width:150px;height:150px;}</style><?php$dbhost='localhost:3306';//mysql服务器主机地址$dbuser='root';//mysql用户名$dbpass='root';//mysql用户名密码$conn=mysqli_connect($dbhost,$dbuser,$dbpass);if(!$conn){die('连接失败:'.mysqli_error($conn));}//设置编码,防止中文乱码mysqli_query($conn,"setnamesutf8");mysqli_select_db($conn,'image');$sql='SELECTnameFROMimg';//查询数据库内容$retval=mysqli_query($conn,$sql);if(!$retval){die('无法读取数据:'.mysqli_error($conn));}$picpath='';//声明空字符串while($row=mysqli_fetch_array($retval)){$picpath=$row[0];//循环我们的第一个字段下面有打印,可查看。//var_dump($picpath);exit;}$picpath=explode(',',$picpath);//分解指示符,将我们一个,分为一个数组。分为一部分。//下面可打印//var_dump($picpath);exit;$acs='';//声明空字符串for($i=0;$i<count($picpath);$i++){//将$picpath内容,也就是每个图片的路径读取出来。$acs=$picpath[$i];//将内容赋给我们的变量空。的字符串。echo"<imgclass='image'src='".$acs."'>";//在img中运行。}mysqli_close($conn);?>
</div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:
PHP如何实现多张图片上传功能的详细内容,希望对您有所帮助,信息来源于网络。