php一次上传多张图片,html5 multiple的使用。
本文为博主原创,转载请声明。
这是我在这里的第一篇博客,之所以在这里写博,是因为这个网站的好多技术博客帮助了我,谢谢。那么cnblog不支持markdown吗?好像“那么”这个关联词用得不对啊。
言归正传,我是一个摄影爱好者,也是个php爱好者。有的时候需要把大量尺寸大高品质的“45度自拍图”批量处理,虽然现在我还不知道用php怎么原比例压缩图片。所以我就想先实现第一步,一次上传多张图片。好了。贴源码吧。
1 print "<h1>上传文件</h1>"; 2 //HTML5 <input> multiple 一次上传多张图片,注意name="photo[]"的形式,name属性设置成数组的形式。 3 echo <<<_END 4 <form method="post" action="" enctype="multipart/form-data"> 5 上传文件:<input type="file" name="photo[]" size="2" multiple> 6 <input type="submit" value="提交"> 7 </form> 8 _END; 9 if($_FILES) { 10 //遍历所有照片的类型,判断上传的类型是否是常用的照片类型 11 foreach($_FILES['photo']['type'] as $key=>$value) { 12 switch ($value) { 13 case 'image/jpeg': $ext = 'jpg'; 14 break; 15 case 'image/png': $ext = 'png'; 16 break; 17 case 'image/gif': $ext = 'gif'; 18 default: 19 $ext = ''; 20 break; 21 } 22 if($ext) { 23 //设置照片的存放相对路径和命名。命名照片例:20161226_2.png,下划线后跟遍历的键值区分照片,可在此处自行设置规则!! 24 $name = '../user_upload/images/'.date('Ymd',time()).'_'."$key.$ext"; 25 //将上传的文件移动到新位置 26 move_uploaded_file($_FILES['photo']['tmp_name'][$key], $name); 27 //显示出上传的图片 28 echo <<<_END 29 <img src ="$name"> 30 _END; 31 } 32 } 33 }
身边有好多刚入门的朋友没见过echo 多行代码的形式,我摘一段上面这段代码的一小部分说明几个注意事项。
echo <<<_END <img src ="$name"> _END;
- <<<_END后不要有空格。
- _END和分号之间不要有空格,且分号后不要有空格。
- _END要顶这行头开始写。
- echo 输出<<<_END和_END之间的代码。
- 在多行代码中可以有变量,并且能被正常解析出值。
- 在多行代码中使用数组的时候例如$arr[key],不能给key加冒号例如$arr[“key”],否则会报错。具体原因不详。希望有知道的朋友告我。
好了以上就是这第一篇在cnb上写的b。欢迎大家留言跟我CNB,注意我的口型tree----new----bee。
参考文献《PHP、MySQL与JavaScript学习手册》,Robin Nixon 著,侯荣涛、侯硕楠、韩进 译。中国电力出版社。