1、webform (注意:name后面一定要加[]号)

<form method="post" enctype="multipart/form-data" action="http://127.0.0.1/mobile/public/api/wx/user/upload" >
First name: <input type="file" name="file[]" /><br />
First name: <input type="file" name="file[]" /><br />
Last name: <input type="text" name="token" /><br />
<input type="submit" value="提交" />
</form>

  注:HTML5的文件已经支持多文件上传:

<input type="file" name="file[]"  multiple/>

2、后端处理

 /*上传文件到服务器*/
public function uploadFile(\Illuminate\Http\Request $request)
{ $this->validate($request,array('token'=>'required|string'));
$this->validationUser($uid,$this->authService);
if($request->hasFile('file')) {
$root = $request->server('DOCUMENT_ROOT');
$file = $request->file('file');
//return var_dump($file);
$filePath=[]; // 定义空数组用来存放图片路径
foreach ($file as $k => $v) {
// 判断图片上传中是否出错
if (!$v->isValid()) {
$this->apiReturn("上传图片出错,请重试!",1);
}
//此处防止没有多文件上传的情况
if(!empty($v)){
if ($v->getSize() / 1024 > 600)
return $this->apiReturn("请检查您上传的文件不能大于600KB", 1);
$fileName = strtolower($v->getClientOriginalName());
if (!preg_match('/\.(jpg|jpeg|png|gif)$/', $fileName))
return $this->apiReturn("您只能上传通用的图片格式", 1);
$destinationPath = '/mobile/resources/uploads/' . date('Ymd');
$fileExtendName = substr($fileName, strpos($fileName, '.'));
$realPath = $root . $destinationPath;
if (!file_exists($realPath))
mkdir($realPath);
$newFileName = uniqid() . mt_rand(1, 100000) . $fileExtendName;
$v->move($realPath, $newFileName);
$filePath[]=$destinationPath . '/' . $newFileName;
}}
return $this->apiReturn(json_encode($filePath), 0);
}
else
return $this->apiReturn('请选择文件再上传', 1);
}

原生多文件上传:

/*多文件上传*/
public function uploadImg($file_name,$dir,$format='string')
{
$file = $_FILES[$file_name];
if($file) {
$root =$_SERVER['DOCUMENT_ROOT'];
$filePath=[]; // 定义空数组用来存放图片路径
$fileNumber=count($file['name']);
for($i=0;$i<$fileNumber;$i++) { //此处防止没有多文件上传的情况
if(!empty($file['name'][$i])){
if ($file['size'][$i] / 1024 > 600)
{
return ['error'=>"请检查您上传的文件不能大于600KB"];
} $fileName = strtolower($file['name'][$i]);
if (!preg_match('/\.(jpg|jpeg|png|gif)$/', $fileName))
{
return ['error'=>'您只能上传通用的图片格式'];
} $destinationPath = $dir. date('Ymd');
$fileExtendName = substr($fileName, strpos($fileName, '.'));
$realPath = $root . $destinationPath;
if (!file_exists($realPath))
{
make_dir($realPath);
}
$newFileName = uniqid() . mt_rand(1, 100000) . $fileExtendName;
move_uploaded_file($file['tmp_name'][$i], $realPath.'/'.$newFileName);
$filePath[]=$destinationPath . '/' . $newFileName; }
}
if($format=='string')
return implode(',',$filePath);
}
else
return ['error'=>'请选择文件再上传'];
}

  

lumen 支持多文件上传的更多相关文章

  1. 强大的支持多文件上传的jQuery文件上传插件Uploadify

    支持多文件上传的jQuery文件上传插件Uploadify,目前此插件有两种版本即Flash版本和HTML5版本,对于HTML5版本会比较好的支持手机浏览器,避免苹果手机Safari浏览器不支持Fla ...

  2. skymvc文件上传支持多文件上传

    skymvc文件上传支持多文件上传 支持单文件.多文件上传 可以设定 文件大小.存储目录.文件类型 //上传的文件目录 $this->upload->uploaddir="att ...

  3. 基于bootstrap的上传插件fileinput实现ajax异步上传功能(支持多文件上传预览拖拽)

    首先需要导入一些js和css文件 ? 1 2 3 4 5 6 <link href="__PUBLIC__/CSS/bootstrap.css" rel="exte ...

  4. Jquery图片上传组件,支持多文件上传

    Jquery图片上传组件,支持多文件上传http://www.jq22.com/jquery-info230jQuery File Upload 是一个Jquery图片上传组件,支持多文件上传.取消. ...

  5. php 图片上传 并返回上传文件位置 支持多文件上传

    <?php /** * Created by PhpStorm. * User: DY040 * Date: 2018/4/26 * Time: 13:23 */ echo '<pre&g ...

  6. ajaxfileupload多文件上传 - 修复只支持单个文件上传的bug

    搜索: jquery ajaxFileUpload AjaxFileUpload同时上传多个文件 原生的AjaxFileUpload插件是不支持多文件上传的,通过修改AjaxFileUpload少量代 ...

  7. jquery.form.js官方插件介绍Form插件,支持Ajax,支持Ajax文件上传

    jquery.form.js官方插件介绍Form插件,支持Ajax,支持Ajax文件上传 http://www.malsup.com/jquery/form/#getting-started [JQu ...

  8. 聊一聊jquery文件上传(支持多文件上传)

    谈到文件上传,现在一般都用现成的组件可以使用.PC端的可以使用uploadify.针对微网站H5也有uploadifive.但是这组件并不能满足各种场景的需求,例如:预览 切图 放大缩小,取消之类的. ...

  9. jQuery.uploadify-----文件上传带进度条,支持多文件上传的插件

    借鉴别人总结的uploadify:基于jquery的文件上传插件,支持ajax无刷新上传,多个文件同时上传,上传进行进度显示,控制文件上传大小,删除已上传文件. uploadify有两个版本,一个用f ...

随机推荐

  1. node.js解析微信消息推送xml格式加密的消息

    之前写过一个解密json格式加密的,我以为xml的和json的差不多,是上上个星期五吧,我的同事也是在做微信公众号里面的消息推送解密,发现好像只能使用xml加密格式的发送到服务器,我们去年也做过企业微 ...

  2. Python第十五天 datetime模块 time模块 thread模块 threading模块 Queue队列模块 multiprocessing模块 paramiko模块 fabric模块

    Python第十五天  datetime模块 time模块   thread模块  threading模块  Queue队列模块  multiprocessing模块  paramiko模块  fab ...

  3. Linux下载_Linux系统各种版本ISO镜像下载(redhat,centos,oracle,ubuntu,openSUSE)

    以下是风哥收集的Linux系统各种版本ISO镜像下载,包括redhat,centos,oracle,ubuntu等linux操作系统. Linux下载1:红帽RedHat Linux(RHEL5.RH ...

  4. 对css盒模型的理解

    介绍一下标准css的盒子模型?低版本IE的盒子模型有什么不同的? 1.有两种:IE盒子模型(怪异模式).W3c盒子模型(标准模式). 2.盒模型组成:内容(content).内边距(padding). ...

  5. 运算符和Scanner的使用

    一 1.运算符:对常量或者变量进行操作的符号 2.算术运算符: 1)四则运算:+ - * / 2)取模运算:%(只看余数) 3)字符串连接:任何数据类型和字符串连在一起,都是字符串结果(+来连接) 4 ...

  6. Webstorm 2017.3激活破解

    之前尝试过各种激活破解办法,不过随着版本的不断升级,激活信息都失效了(毕竟咱不是通过正常途径激活的),只能重新激活.而且难度越来越大,记得早先网上有人分享激活码,激活的server地址,破解程序等等, ...

  7. 六 Struts 拦截器、OGNL表达式

    一.OGNL表达式1.概念:是表达式语言,专门用来访问对象取值用的.2.对比EL表达式使用场景: A.EL主要用在web的jsp页面取值 B.OGNL适用以下环境 1.java程序中 2.在页面使用( ...

  8. Core官方DI解析(3)-ServiceCallSite.md

    上一篇说过在整个DI框架中IServiceProviderEngine是核心,但是如果直接看IServiceProviderEngine派生类其实看不出也没什么东西,因为这个类型其实都是调用的其它对象 ...

  9. MyIsam与InnoDB存储引擎主要区别

    MyIsam与InnoDB主要有以下4点大的区别,缓存机制,事务支持,锁定实现,数据物理存储方式(包括索引和数据). 1.缓存机制 myisam 仅仅缓存索引,不会缓存实际数据信息,他会将这一工作交给 ...

  10. 03-三层交换机的OSPF实验

    三层交换机的OSPF实验 1.OSPF介绍 开放式最短路径优先(英语:Open Shortest Path First,缩写为 OSPF)是对链路状态路由协议的一种实现,隶属内部网关协议(IGP),故 ...