HTML表单:

<html>
<head><title>upload file</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
</head>
<body>
<form action="test.php" method="post" enctype="multipart/form-data">
<!-- name必须是MAX_FILE_SIZE,value是字节数 -->
<input type="hidden" name="MAX_FILE_SIZE" value="2097152"/>
<!-- accept是文件的MIME类型 -->
<!-- nultiple="nultiple" 是代表可以多选 -->
<input type="file" name="fileName[]" multiple="multiple" accept="image/jpeg,image/gif,image/png,application/x-MS-bmp,text/plain,text/html" /><br><br>
<input type="submit" value="上传文件"/>
</form>
</body>
</html>

PHP多文件上传函数表单uploads.func.php

<?php

function getFiles(){

    //把三维数组改成两维数组;
$i=0;
foreach ($_FILES as $file) { if (is_array($file['name'])) { foreach($file['name'] as $key=>$value){
$files[$i]['name']=$file['name'][$key];
$files[$i]['type']=$file['type'][$key];
$files[$i]['tmp_name']=$file['tmp_name'][$key];
$files[$i]['size']=$file['size'][$key];
$files[$i]['error']=$file['error'][$key];
$i++;
# code...
}
}elseif (is_string($file['name'])) { $files[$i]=$file;
$i++;
# code...
}
# code...
} return $files;
} function uploadFiles($files,$path='uploads',$maxsize=2097152){
$result=array(); //判断$files['error']
if ($files['error']===UPLOAD_ERR_OK) { //判断文件大小
//$maxsize=2097152;
if ($files['size']>$maxsize) { $result['msg']=$files['name'].'文件过大';
# code...
} //判断文件格式
$ext=@strtolower(end(explode('.', $files['name'])));
$extarray=array('gif','jpeg','jpg');
if (!in_array($ext, $extarray)) { $result['msg']=$files['name'].'文件格式不正确';
# code...
} //检查是否是真实的图片
$check= true;
if ($check) { if(@!getimagesize($files['tmp_name'])){ $result['msg']=$files['name'].'不是真正的图片';
}
# code...
} //判断是否是通过HTTP Post上传
if (!is_uploaded_file($files['tmp_name'])) { $result['msg']=$files['name'].'不是通过HTTP POST上传';
# code...
} if($result) return $result;//返回$result; //移动文件
//指定上传目录判断并创建目录
//$path='uploads';
if (!file_exists($path)) { mkdir($path,0777,true);
chmod($path, 0777);
# code...
} //唯一的文件名
$newname=md5(uniqid(microtime(true),true)).'.'.$ext;
$destination=$path.'/'.$newname; if(!move_uploaded_file($files['tmp_name'], $destination)){ $result['msg']=$files['name'].'文件移动失败'; } $result['msg']=$files['name'].'上传成功'; $result['dest']=$destination; return $result; }else{
switch($files['error']){
case 1:
$result['msg']=$files['name']. "文件超过了php.ini中upload_max_filesize选项限制的值。";
break; case 2:
$result['msg']= $files['name']."文件的大小超过了HTML表单中max_file_size选项指定的值。";
# code...
break;
case 3:
$result['msg']= $files['name']."文件只有部分被上传";
# code...
break;
case 4:
$result['msg']= "没有文件被上传";
# code...
break;
case 6:
$result['msg']= "找不到临时文件夹。";
# code...
break;
case 7:
case 8:
$result['msg']= "系统出错";
# code...
break;
} return $result;
} } ?>

upload.php

<?php
include('uploads.func.php'); $files=getFiles(); foreach ($files as $value) { $result=uploadFiles($value);
echo $result['msg']."<br/>";
$uploads[]=@$result['dest'];
} $uploads=array_values(array_filter($uploads));
print_r($uploads);
//当array_filter函数的callback留空时 他会过滤掉所有键值为false的键
//array_values() 函数返回一个包含给定数组中所有键值的数组,但不保留键名。

PHP多文件上传代码练习的更多相关文章

  1. servlet3.0获取参数与文件上传代码示例

    转: servlet3.0获取参数与文件上传代码示例 2018年08月26日 20:25:35 苏凯勇往直前 阅读数:98   package com.igeek.servlet;   import ...

  2. php文件上传代码解析

    php文件上传代码解析 is_uploaded_file()  //函数判断指定的文件是否是通过 HTTP POST 上传的,返回一个布尔值. $_FILES['upfile']['tmp_name' ...

  3. 实现Magento多文件上传代码功能开发

    在Magento中上传单个文件很简单,可以直接在继承的Mage_Adminhtml_Block_Widget_Form类中直接添加如下组件Field:  对于图片:   $fieldset->a ...

  4. (实用篇)php处理单文件、多文件上传代码分享

    php处理  单文件.多文件上传实例代码,供大家参考,具体内容如下 后台处理文件submit_form_process.php <?php /************************** ...

  5. PHP文件上传代码和逻辑详解

    文件上传的逐步完善------ [简单的上传:]   <form action="upload.php"  method="post"  enctype= ...

  6. PHP 图片文件上传代码

    通过 PHP,可以把文件上传到服务器.里面加入一些图片的判断,如果不加判断文件的类型就可以上传任意格式的文件. 为了网站的安全,肯定不让上传php文件,如果有人进入你的后台,上传了一个php文件,你的 ...

  7. PHP 图片文件上传代码分享

    分享下php上传图片文件的一段代码,挺不错的. 通过 PHP,可以把文件上传到服务器.加入一些图片的判断,如果不加判断文件的类型就可以上传任意格式的文件. 当然了,会禁止上传php文件,以及其它程序代 ...

  8. ASP文件上传代码

    在网上看到的代码,稍微有点问题,改了一下就可以了.Chrome下是可以用的,别的浏览器还没有确认. <% Response.Buffer = True Server.ScriptTimeOut= ...

  9. SSH文件上传代码片段

    一.文件上传限制: 在web.xml中配置Struts前端控制器时,设置初始化参数:如下图所示 二.controller代码 @Namespace("/") @ParentPack ...

  10. HttpClient多文件上传代码及普通参数中文乱码问题解决

    该随笔记录了在实际项目中使用HttpClient调用外部api,需上传文件和普通参数的代码. 笔者在使用 HttpClient 调用 http api 接口时,需要服务端上传文件和一些普通参数给 ht ...

随机推荐

  1. CF 某套题 O :Grid (简单BFS)

    题意: 从左上角跳到右下角最少需要多少步,跳的规则为:可以向四个方向的任意一个方向跳当前格子中的步数,若跳不到右下角输出IMPOSSIBLE. 题解: BFS搜索,注意判断边界,标记. 代码: #in ...

  2. Linux基础系列-Day8

    Shell编程基础 Shell介绍 Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器).它类似于windows下的的cmd.exe.它接收用户命令,然后调用相应的应用程序 ...

  3. [BZOJ2006][NOI2010]超级钢琴(ST表+堆)

    2006: [NOI2010]超级钢琴 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 3679  Solved: 1828[Submit][Statu ...

  4. 【线段树】I Hate It

    I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  5. 事件BOM DOM

    1.事件 1.1 事件绑定 # 1.写在html元素中 <button onclick='code'></button> # 2.把事件当作元素对象的方法 btnEle.onc ...

  6. storm性能优化

    Storm 性能优化 目录 场景假设 调优步骤和方法 Storm 的部分特性 Storm 并行度 Storm 消息机制 Storm UI 解析 性能优化 场景假设 在介绍 Storm 的性能调优方法之 ...

  7. Oracle Linux logoOracle Linux

    http://www.oschina.net/p/oracle_enterprise_linux

  8. subline text 工具快捷键说明

    编辑 ctrl + enter           光标当前行下一行新增一行,并且光标跳到下一行进行编辑 ctrl + shift +enter  光标当前行上一行新增一行,并且光标跳到上一行进行编辑 ...

  9. Cronz表达式

  10. Java_导出Excel

    导出的Excel标题.Sheet名称.数据内容都可以使用中文​ 一.pom.xml引入jar包 1 2 3 4 5 <dependency>             <groupId ...