<!DOCTYPE html>
<html lang="zh-cn">

<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<title>上传相片</title>

<style>
* {
margin: 0;
padding: 0;
}
/*图片上传*/

html,
body {
width: 100%;
height: 100%;
}

.container {
width: 100%;
height: 100%;
overflow: auto;
clear: both;
}

.z_photo {
width: 5rem;
height: 5rem;
padding: 0.3rem;
overflow: auto;
clear: both;
margin: 1rem auto;
border: 1px solid #555;
}

.z_photo img {
width: 1rem;
height: 1rem;
}

.z_addImg {
float: left;
margin-right: 0.2rem;
}

.z_file {
width: 1rem;
height: 1rem;
background: url('images/addxp.png') no-repeat;
background-size: 100% 100%;
float: left;
margin-right: 0.2rem;
}

.z_file input::-webkit-file-upload-button {
width: 1rem;
height: 1rem;
border: none;
position: absolute;
outline: 0;
opacity: 0;
}

.z_file input#file {
display: block;
width: auto;
border: 0;
vertical-align: middle;
}
/*遮罩层*/

.z_mask {
width: 100%;
height: 100%;
background: rgba(0, 0, 0, .5);
position: fixed;
top: 0;
left: 0;
z-index: 999;
display: none;
}

.z_alert {
width: 3rem;
height: 2rem;
border-radius: .2rem;
background: #fff;
font-size: .24rem;
text-align: center;
position: absolute;
left: 50%;
top: 50%;
margin-left: -1.5rem;
margin-top: -2rem;
}

.z_alert p:nth-child(1) {
line-height: 1.5rem;
}

.z_alert p:nth-child(2) span {
display: inline-block;
width: 49%;
height: .5rem;
line-height: .5rem;
float: left;
border-top: 1px solid #ddd;
}

.z_cancel {
border-right: 1px solid #ddd;
}

</style>
</head>

<body>

<div class="container">
<!-- 照片添加 -->
<div class="z_photo">
<div class="z_file">
<form method="post" action="scxp.php" enctype="multipart/form-data">
<input type="file" name="u_file[]" id="file" value="" accept="image/*" multiple onchange="imgChange('z_photo','z_file');" />
<br/> <br/>
<input type="submit" value="上传" name="submitBtn" />
</form>
</div>

</div>

<!--遮罩层-->
<div class="z_mask">
<!--弹出框-->
<div class="z_alert">
<p>确定要删除这张图片吗?</p>
<p>
<span class="z_cancel">取消</span>
<span class="z_sure">确定</span>
</p>
</div>
</div>
</div>

<script type="text/javascript">
//px转换为rem
(function(doc, win) {
var docEl = doc.documentElement,
resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
recalc = function() {
var clientWidth = docEl.clientWidth;
if (!clientWidth) return;
if (clientWidth >= 640) {
docEl.style.fontSize = '100px';
} else {
docEl.style.fontSize = 100 * (clientWidth / 640) + 'px';
}
};

if (!doc.addEventListener) return;
win.addEventListener(resizeEvt, recalc, false);
doc.addEventListener('DOMContentLoaded', recalc, false);
})(document, window);

function imgChange(obj1, obj2) {
//获取点击的文本框
var file = document.getElementById("file");
//存放图片的父级元素
var imgContainer = document.getElementsByClassName(obj1)[0];
//获取的图片文件
var fileList = file.files;
//文本框的父级元素
var input = document.getElementsByClassName(obj2)[0];
var imgArr = [];
//遍历获取到得图片文件
for (var i = 0; i < fileList.length; i++) {
var imgUrl = window.URL.createObjectURL(file.files[i]);
imgArr.push(imgUrl);
var img = document.createElement("img");
img.setAttribute("src", imgArr[i]);
var imgAdd = document.createElement("div");
imgAdd.setAttribute("class", "z_addImg");
imgAdd.appendChild(img);
imgContainer.appendChild(imgAdd);
};
imgRemove();
};

function imgRemove() {
var imgList = document.getElementsByClassName("z_addImg");
var mask = document.getElementsByClassName("z_mask")[0];
var cancel = document.getElementsByClassName("z_cancel")[0];
var sure = document.getElementsByClassName("z_sure")[0];
for (var j = 0; j < imgList.length; j++) {
imgList[j].index = j;
imgList[j].onclick = function() {
var t = this;
mask.style.display = "block";
cancel.onclick = function() {
mask.style.display = "none";
};
sure.onclick = function() {
mask.style.display = "none";
t.style.display = "none";
};

}
};
};

</script>
</body>

</html>
<?php
if($_POST['submitBtn'] == '上传'){ //判断提交按钮是否为空
/*echo "OK<br/>";
echo "数组:".$_FILES."<br/>";
if($_FILES){
echo "是数组<br/>";
$file = $_FILES["u_file"];
echo "数组的个数:".count($file)."<br/>";//5
$name = $file["name"];
echo "数组的个数:".count($name)."<br/>";//1
}*/

//$num = $_FILES["u_file"]["name"];
//echo "个数是:".count($num);

//上传多张图:同时上传多张图的上传原理和单张图上传原理是相同的,只不过在对上传字段进行出来了时候增加了一个数组的应用。注意input的name是一个数组的形式,php中获取数组个数的时候,才能获取到有效的数组长度。
for($i=0; $i<count($_FILES["u_file"]["name"]); $i++){
$file_path = "images/upload1/"; //定义图片在服务器中的存储位置
$picture_name=$_FILES['u_file']['name'][$i]; //获取上传图片的名称
$picture_name=strstr($picture_name , "."); //通过strstr()函数截取上传图片的后缀
if($picture_name!= ".jpg"){ //根据后缀判断上传图片的格式是否符合要求
echo "<script>alert('上传图片格式不正确,请重新上传');</script>";//这里有刷新页面
}else if($_FILES['u_file']['tmp_name'][$i]){
echo "临时路径:".$_FILES['u_file']['tmp_name'][$i]."<br/>";
$dataImgName[$i] = date('Ymdhis').$i;//同时上传,后面的会覆盖前面的,所有再在后面加上一个变量区别开,避免覆盖。
echo "实际路径:".$file_path.$dataImgName[$i]."<br/>";
move_uploaded_file($_FILES['u_file']['tmp_name'][$i],$file_path.$dataImgName[$i]);
//执行图片上传
//echo '<script>alert("图片上传成功!");</script>';
}
else
echo '<script>alert("图片上传失败!");</script>';
}

/*
//上传单张图
$file_path = "images/upload1/"; //定义图片在服务器中的存储位置
$picture_name=$_FILES['u_file']['name']; //获取上传图片的名称
$picture_name=strstr($picture_name , "."); //通过strstr()函数截取上传图片的后缀
if($picture_name!= ".jpg"){ //根据后缀判断上传图片的格式是否符合要求
echo "<script>alert('上传图片格式不正确,请重新上传');</script>";//这里有刷新页面
}else if($_FILES['u_file']['tmp_name']){
$dataImgName = date('Ymdhis');
move_uploaded_file($_FILES['u_file']['tmp_name'],$file_path.$dataImgName);
//执行图片上传
echo '<script>alert("图片上传成功!");</script>';
}
else
echo '<script>alert("图片上传失败!");</script>';
}*/
}
?>

$_FILES函数:
当客户端提交后,我们获得了一个$_FILES 数组

$_FILES数组内容如下:
$_FILES['myFile']['name'] 客户端文件的原名称。
$_FILES['myFile']['type'] 文件的 MIME 类型,需要浏览器提供该信息的支持,例如"image/gif"。
$_FILES['myFile']['size'] 已上传文件的大小,单位为字节。
$_FILES['myFile']['tmp_name'] 文件被上传后在服务端储存的临时文件名,一般是系统默认。可以在php.ini的upload_tmp_dir 指定,但 用 putenv() 函数设置是不起作用的。
$_FILES['myFile']['error'] 和该文件上传相关的错误代码。['error'] 是在 PHP 4.2.0 版本中增加的。下面是它的说明:(它们在PHP3.0以后成了常量)
UPLOAD_ERR_OK
值:0; 没有错误发生,文件上传成功。
UPLOAD_ERR_INI_SIZE
值:1; 上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。
UPLOAD_ERR_FORM_SIZE
值:2; 上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。
UPLOAD_ERR_PARTIAL
值:3; 文件只有部分被上传。
UPLOAD_ERR_NO_FILE
值:4; 没有文件被上传。
值:5; 上传文件大小为0.

/*******************************************************************/

题目:怎么样通过php使用html5实现多文件上传?(php多图上传)

答案:
定义和用法
multiple 属性规定输入字段可选择多个值。如果使用该属性,则字段可接受多个值。
实例:
<form action="demo_form.asp" method="get">
Select images: <input type="file" name="img" multiple="multiple" />
<input type="submit" />
</form>
上面实例中的input file 可接受多个文件上传字段。
了解了html5中file的multiple属性,下面我们开始讲解使用html5实现多文件上传。
实例代码:
html:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<form action="my_parser.php" method="post" enctype="multipart/form-data">
<p><input name="upload[]" type="file" multiple="multiple" /></p>
<input type="submit" value="Upload all files">
</form>
</body>
</html>
php代码:
for($i=0; $i<count($_FILES['upload']['name']); $i++) {
//Get the temp file path
$tmpFilePath = $_FILES['upload']['tmp_name'][$i];

//Make sure we have a filepath
if ($tmpFilePath != ""){
//Setup our new file path
$newFilePath = "./uploadFiles/" . $_FILES['upload']['name'][$i];

//Upload the file into the temp dir
if(move_uploaded_file($tmpFilePath, $newFilePath)) {

//Handle other code here

}
}
}

怎么样通过php使用html5实现多文件上传?(php多图上传)的更多相关文章

  1. HTML5 原生API input file 来实现多图上传,并大图预览

    闲来无事,突然想用原生来实现图片的多图上传. 一.效果图大致如下: 1.上传时可以选择多图 2.上传之后缩略图下过图如下: 3.点击缩略图,大图展示当前所点击的图片,并可以左右滑动查看其它的缩略图对应 ...

  2. HTML5应用之文件拖拽上传

    使用HTML5的文件API,可以将操作系统中的文件拖放到浏览器的指定区域,实现文件上传到服务器.本文将结合实例讲解HTML5+jQuery+PHP实现拖拽上传图片的过程,来看下HTML5的魅力吧. H ...

  3. html5+php实现文件的断点续传ajax异步上传

    html5+php实现文件的断点续传ajax异步上传 准备知识:断点续传,既然有断,那就应该有文件分割的过程,一段一段的传.以前文件无法分割,但随着HTML5新特性的引入,类似普通字符串.数组的分割, ...

  4. HTML5实现图片文件异步上传

    原文:HTML5实现图片文件异步上传 利用HTML5的新特点做文件异步上传非常简单方便,本文主要展示JS部分,html结构.下面的代码并未使用第三发库,如果有参照,请注意一些未展现出来的代码片段.我这 ...

  5. [转] HTML5应用之文件上传

    HTML5解决了以往网页编写的一个难题:带有上传进度的文件上传. 本文的代码全部来自http://www.matlus.com/html5-file-upload-with-progress/,如在技 ...

  6. sublime2创建一个html5的snippets文件

    背景:跟了一个网上课程,老师哗啦啦敲代码,屏幕上只敲了几个字,键盘一操作,瞬间一大溜代码,看得我心惊肉跳连忙暂停抄抄抄. 举个简单的例子,我需要创建一个html文件.但是我不想每次都敲固定的格式.那么 ...

  7. 上传文件,不依赖 Jquery flash 插件,用到HTML5 input 新属性实现过滤文件格式、同时上传多个文件

    1.样式 2.js 3.后台处理 4.效果图 一.样式 <style> .divUpload { position: relative; } .divUploadFirst { width ...

  8. HTML5+Canvas+jQuery调用手机拍照功能实现图片上传(二)

    上一篇仅仅讲到前台操作,这篇专门涉及到Java后台处理.前台通过Ajax提交将Base64编码过的图片数据信息传到Java后台,然后Java这边进行接收处理.通过对图片数据信息进行Base64解码,之 ...

  9. HTML5 多图上传

    HTML5 多图上传 时间 2014-06-05 16:06:29  月小升博客 原文  http://java-er.com/blog/html5-many-image-upload/ 主题 HTM ...

随机推荐

  1. English trip V2 - 6 Sports Teacher:Taylor Key:phrasal verbs

    In this lesson you will learn to talk about sports. 课上内容(Lesson) # How many different sports can you ...

  2. 事务,mybatis

    数据库事务:一件完整的事情, 要么全部成功,要么就全部失败 金典案例:转账 A给B转账:100 A:-100 B:+100 如何开启事务: Start transaction; 之前的转账操作(如果在 ...

  3. BP neural network optimized by PSO algorithm on Ammunition storage reliability prediction 阅读笔记

    1.BP neural network optimized by PSO algorithm on Ammunition storage reliability prediction 文献简介文献来源 ...

  4. 《Coderxiaoban团队》第二次作业:团队项目选题报告

    <Coderxiaoban团队>第二次作业:团队项目选题报告 项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 实验六 团队作业2:团队项目选题 团队名称 Co ...

  5. web前端超出两行用省略号表示

    HTML <span class="GW_bod0112211"> 吐鲁番特级无炳黑加仑葡萄干500g包邮无籽吐鲁番特级无炳黑加仑葡萄干500g包邮无籽吐鲁番特级无炳黑 ...

  6. linux php7.2安装扩展memcached

    wget http://pecl.php.net/get/igbinary-2.0.8.tgz tar -xzvf igbinary-2.0.8.tgz cd igbinary-2.0.8 /usr/ ...

  7. echarts x和y去掉

    解决方法 "axisLine": { "show": false },

  8. Linux虚机安装配置Tomcat

    d第一步:下载Tomcat包,网址http://tomcat.apache.org/ 选择tar.gz包下载,并传到虚机中 第二步:解压下载好的Tomcat包 命令:tar -zxvf apache- ...

  9. Oracle入门知识

    在客户端里PL/sql里面 记得用commint 回滚 所写得SQL语句才真的有效  如插入7千万个数据 没有执行commint 就等于没有 将数据真正的存入数据库服务器里面去 所以当其他前端链接上 ...

  10. Servlet(2)

    HttpServlet 简介: Servlet 就是一个普通的java类,是运行在web容器上(tomcat)上的一个java类 用来通过Servlet中的代码,接受Http中浏览器的请求信息,以及对 ...