首先前端部分需要设置好控件,这里使用HTML5 中 input 的新增属性 multiple 可以很好的解决了以往上传多个需要点击多次"上传按钮"的麻烦:

 <form action="" method="post" enctype="multipart/form-data">

     <input type="file" id="upload_imgs" name="upload_imgs[]" multiple="multiple">

     <input type="submit" value="提交上传">
</form>

如果需要在 选中文件后,提交前 告之用户选中的文件个数 可以使用files.length属性,比如:

document.upload_imgs.files.length 即可获取上述表单中的选中文件个数。

接下来是PHP中的处理:

 <?php

 header("content-type:text/html; charset=utf8");

 if(!empty($_FILES)){
//print_r($_FILES['upload_imgs']);exit; function upload_files($name){
$files = $_FILES[$name]; $k1 = $k2 = array();
foreach($files as $key => $val){
if($key == 'tmp_name'){
$k1 = $val;
}
if($key == 'name'){
$k2 = $val;
}
} //$filenames 保存移动后的文件名
$filenames = array();
foreach($k1 as $key => $val){
//$rename 获取原始文件名 (不包括后缀名)
$rename = substr($k2[$key],0,strpos($k2[$key],'.')); //$suffix 文件后缀名
$suffix = substr($k2[$key],strpos($k2[$key],'.')); //echo md5($rename) . $suffix;exit;
$time = time();
//如果不存在upload文件夹则创建upload文件夹
if(!is_dir('./upload')){
mkdir('./upload');
}
if(!is_dir('./upload/' . date("Y") . "-" . date("m") . "-" . date("d"))){
mkdir('./upload/' . date("Y") . "-" . date("m") . "-" . date("d"));
}
move_uploaded_file($val,'./upload/' . date("Y") . "-" . date("m") . "-" . date("d") . '/' . md5($rename . $time) . $suffix); $filenames[] = 'upload/' . date("Y") . "-" . date("m") . "-" . date("d") . '/' . md5($rename . $time) . $suffix;
} print_r($filenames);exit;
// 数组形式返回所上传的文件路径
return $filenames;
} upload_files('upload_imgs'); }

PHP文件执行 upload_files() 函数后即可获得上传后的文件路径。

这样批量上传就做好了。

欢迎各种方式转载,但请务必注明出处。

PHP批量上传一次点击选中多个的更多相关文章

  1. 使用KindEditor富文本编辑器,点击批量上传按钮没有选择图片按钮

    问题:批量上传没有选择图片按钮

  2. ux.plup.File plupload 集成 ux.plup.FileLis 批量上传预览

    //plupload 集成 Ext.define('ux.plup.File', { extend: 'Ext.form.field.Text', xtype: 'plupFile', alias: ...

  3. asp.net+swfupload 多图片批量上传(附源码下载)

    asp.net的文件上传都是单个文件上传方式,无法执行一次性多张图片批量上传操作,要实现多图片批量上传需要借助于flash,通过flash选取多个图片(文件),然后再通过后端服务进行上传操作. 本次教 ...

  4. 文件/图片,批量上传【神器】--WebUploader

    <system.web> <httpRuntime maxRequestLength="102400" executionTimeout="720&qu ...

  5. 首页商品图片显示错位,easy-popular批量上传

    =============关于zencart批量商品管理的说明================== 首先,安装好批量商品管理模块,设置 /tempEP 目录可写二.确认你已经在后台增加了一些分类目录. ...

  6. 不带插件 ,自己写js,实现批量上传文件及进度显示

    今天接受项目中要完成文件批量上传文件而且还要显示上传进度,一开始觉得这个应该不是很麻烦,当我在做的时候遇到了很多问题,很头疼啊. 不过看了别人写的代码,自己也测试过,发现网上好多都存在一些问题,并不是 ...

  7. WEB版一次选择多个文件进行批量上传(WebUploader)的解决方案

    本人在2010年时使用swfupload为核心进行文件的批量上传的解决方案.见文章:WEB版一次选择多个文件进行批量上传(swfupload)的解决方案. 本人在2013年时使用plupload为核心 ...

  8. 基于“formData批量上传的多种实现” 的多图片预览、上传的多种实现

    前言 图片上传是web项目常见的需求,我基于之前的博客的代码(请戳:formData批量上传的多种实现)里的第三种方法实现多图片的预览.上传,并且支持三种方式添加图片到上传列表:选择图片.复制粘贴图片 ...

  9. formData批量上传的多种实现

    前言 最近项目需要批量上传附件,查了下资料,网上很多但看着一脸懵,只贴部分代码,介绍也不详细,这里记录一下自己的采坑与多种实现,以免以后忘记. 这里先介绍下FormData对象,以下内容摘自:http ...

随机推荐

  1. 求余区间的求和类问题 离线+线段树 HDU4228

    题目大意:给一个数组a,他的顺序是严格的单调增,然后有如下三个操作 ①加入一个val到a数组里面去,加入的位置就是a[i-1]<val<a[i+1] ②删除一个a[i]=val的值 ③查询 ...

  2. P8 Visible Lattice Points

    P8 Visible Lattice Points Time Limit:1000ms,     Memory Limit:65536KB Description A lattice point (x ...

  3. HDU 1213 How Many Tables 并查集 寻找不同集合的个数

    题目大意:有n个人 m行数据,每行数据给出两个数A B,代表A-B认识,如果A-B B-C认识则A-C认识,认识的人可以做一个桌子,问最少需要多少个桌子. 题目思路:利用并查集对相互认识的人进行集合的 ...

  4. zencart 掉炸天的tpl_main_page.php

    <?php /** * Common Template - tpl_main_page.php * * @version $Id: tpl_main_page.php 7085 2007-09- ...

  5. Spring中引入其他配置文件

    一.引入其他 模块XML 在Spring的配置文件,有时候为了分模块的更加清晰的进行相关实体类的配置. 比如现在有一个job-timer.xml的配置 <?xml version="1 ...

  6. Jedis使用示例

    http://javacrazyer.iteye.com/blog/1840161 http://www.cnblogs.com/edisonfeng/p/3571870.html

  7. css3盒模型学习--利用box自适应布局

    box-flex是css3新添加的盒子模型属性,它的出现可以解决我们通过N多结构.css实现的布局方式.经典   的一个布局应用就是布局的垂直等高.水平均分.按比例划分. 目前box-flex属性还没 ...

  8. 使用SQLServer2005插入一条数据时返回当前插入数据的ID

    使用SQLServer2005插入一条数据时返回当前插入数据的ID 在执行完插入后 再执行 select @@identity from users 就OK 就是刚才插入的那行的 ID了 补充: @@ ...

  9. CodeForces 660B Seating On Bus

    模拟. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #inc ...

  10. GIT使用规范流程

    1:每次开发新功能时,都应该新建立一个独立的分支(branch),整个项目工程有且只有一个主分支(master branch),项目发版时是从主分支上发布. Step01:切换到主分支 $ git c ...