PHP多文件上传代码练习
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多文件上传代码练习的更多相关文章
- servlet3.0获取参数与文件上传代码示例
转: servlet3.0获取参数与文件上传代码示例 2018年08月26日 20:25:35 苏凯勇往直前 阅读数:98 package com.igeek.servlet; import ...
- php文件上传代码解析
php文件上传代码解析 is_uploaded_file() //函数判断指定的文件是否是通过 HTTP POST 上传的,返回一个布尔值. $_FILES['upfile']['tmp_name' ...
- 实现Magento多文件上传代码功能开发
在Magento中上传单个文件很简单,可以直接在继承的Mage_Adminhtml_Block_Widget_Form类中直接添加如下组件Field: 对于图片: $fieldset->a ...
- (实用篇)php处理单文件、多文件上传代码分享
php处理 单文件.多文件上传实例代码,供大家参考,具体内容如下 后台处理文件submit_form_process.php <?php /************************** ...
- PHP文件上传代码和逻辑详解
文件上传的逐步完善------ [简单的上传:] <form action="upload.php" method="post" enctype= ...
- PHP 图片文件上传代码
通过 PHP,可以把文件上传到服务器.里面加入一些图片的判断,如果不加判断文件的类型就可以上传任意格式的文件. 为了网站的安全,肯定不让上传php文件,如果有人进入你的后台,上传了一个php文件,你的 ...
- PHP 图片文件上传代码分享
分享下php上传图片文件的一段代码,挺不错的. 通过 PHP,可以把文件上传到服务器.加入一些图片的判断,如果不加判断文件的类型就可以上传任意格式的文件. 当然了,会禁止上传php文件,以及其它程序代 ...
- ASP文件上传代码
在网上看到的代码,稍微有点问题,改了一下就可以了.Chrome下是可以用的,别的浏览器还没有确认. <% Response.Buffer = True Server.ScriptTimeOut= ...
- SSH文件上传代码片段
一.文件上传限制: 在web.xml中配置Struts前端控制器时,设置初始化参数:如下图所示 二.controller代码 @Namespace("/") @ParentPack ...
- HttpClient多文件上传代码及普通参数中文乱码问题解决
该随笔记录了在实际项目中使用HttpClient调用外部api,需上传文件和普通参数的代码. 笔者在使用 HttpClient 调用 http api 接口时,需要服务端上传文件和一些普通参数给 ht ...
随机推荐
- CF 某套题 O :Grid (简单BFS)
题意: 从左上角跳到右下角最少需要多少步,跳的规则为:可以向四个方向的任意一个方向跳当前格子中的步数,若跳不到右下角输出IMPOSSIBLE. 题解: BFS搜索,注意判断边界,标记. 代码: #in ...
- Linux基础系列-Day8
Shell编程基础 Shell介绍 Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器).它类似于windows下的的cmd.exe.它接收用户命令,然后调用相应的应用程序 ...
- [BZOJ2006][NOI2010]超级钢琴(ST表+堆)
2006: [NOI2010]超级钢琴 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 3679 Solved: 1828[Submit][Statu ...
- 【线段树】I Hate It
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- 事件BOM DOM
1.事件 1.1 事件绑定 # 1.写在html元素中 <button onclick='code'></button> # 2.把事件当作元素对象的方法 btnEle.onc ...
- storm性能优化
Storm 性能优化 目录 场景假设 调优步骤和方法 Storm 的部分特性 Storm 并行度 Storm 消息机制 Storm UI 解析 性能优化 场景假设 在介绍 Storm 的性能调优方法之 ...
- Oracle Linux logoOracle Linux
http://www.oschina.net/p/oracle_enterprise_linux
- subline text 工具快捷键说明
编辑 ctrl + enter 光标当前行下一行新增一行,并且光标跳到下一行进行编辑 ctrl + shift +enter 光标当前行上一行新增一行,并且光标跳到上一行进行编辑 ...
- Cronz表达式
- Java_导出Excel
导出的Excel标题.Sheet名称.数据内容都可以使用中文 一.pom.xml引入jar包 1 2 3 4 5 <dependency> <groupId ...