首先前端部分需要设置好控件,这里使用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. php报错 Call to undefined function mb_stripos()

    错误原因 没有mbstring扩展 本文只介绍Linux解决办法 方法一 编译PHP的时候 带上--enable-mbstring参数 方法二 进入PHP源码/ext/mbstring目录 ./con ...

  2. Android Studio 下载地址【包括国内本地下载】

    Android Studio 下载地址,目前最新可下载地址,尽量使用下载工具. Android Studio正式发布,给Android开发者带来了不小的惊喜.但是下载地址却不给力,国内似乎无法正常下载 ...

  3. ecb gud

    mx gdb不好用,好像是因为用了一个dedicated window,改用mx gud-gdb,好用. http://stackoverflow.com/questions/13560933/how ...

  4. SD卡的控制方法(指令集和控制时序)

    1.SD卡的命令格式: SD卡的指令由6字节(Byte)组成,如下: Byte1:0 1 x x x x x x(命令号,由指令标志定义,如CMD39为100111即16进制0x27,那么完整的CMD ...

  5. FusionCharts 分类以及各个属性参数列表

    <FusionCharts学习及使用笔记>之 第一篇 其实一直以来我都在有意无意的把我平常工作中遇到并解决的问题做个记录,放到我的网易博客中.但却一直没有想过如何把我使用的技术做一个系列化 ...

  6. listView上拉刷新下拉加载

    xlistview_header.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLa ...

  7. myeclipse导出javadoc时特殊字符 尖括号

    源字符<?xml version="1.0" encoding="UTF-8" standalone="yes"?> javad ...

  8. java日期格式大全 format SimpleDateFormat(转)

    java日期格式大全 format SimpleDateFormat   /**    * 字符串转换为java.util.Date<br>    * 支持格式为 yyyy.MM.dd G ...

  9. (转)如何向map和reduce脚本传递参数

    [MapReduce] 如何向map和reduce脚本传递参数,加载文件和目录 分类: hadoop2014-04-28 21:30 1553人阅读 评论(0) 收藏 举报 hadoop 本文主要讲解 ...

  10. FIFO 和 LRU 调度算法

    在一个采用页式虚拟存储管理的系统中(字地址序列.页号.块号均从零开始编址),有一用户作业,它依次要访问的字地址序列是:15,128,300,388,246,402,223,142,360,267,若该 ...