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 ...
随机推荐
- 解决lazarus 多线程报错问题
很多人都在Windows中使用线程技术,然后同样的代码移植到Linux下一运行就出错.一开始不解其中的奥妙.既然Lazarus提供了TThread类,也没注明非要在Windows下使用.没道理在Lin ...
- Linux下使进程在后台运行
怎么样使程序在后台执行 /////////////////// nohup ./nn > nn.log 2 > &1 & //////////// 方法有很多, ...
- Linux的文件描述符
(1).文件描述符的定义 文件描述符是内核为了高效管理已被打开的文件所创建的索引,用于指向被打开的文件,所有执行I/O操作的系统调用都通过文件描述符:文件描述符是一个简单的非负整数,用以表明每个被进程 ...
- Linux命令之head
head [选项] [文件] head命令输出文件开头部分,默认情况下显示文件的头10行.如果指定多个文件,每个文件前都有一个标题,给出文件名.如果没有指定文件,或当文件为-时,读取标准输入. (1) ...
- Xamarin.Forms教程下载安装Windows版的Xamarin开发工具
Xamarin.Forms教程下载安装Windows版的Xamarin开发工具 下载安装Windows版的Xamarin开发工具 本节将讲解如何下载并安装Windows版的Xamarin开发工具. 下 ...
- Spring 异常
Java Web项目整体异常处理机制 http://www.51testing.com/html/90/n-823590.html spring mvc 异常统一处理方式 http://www.c ...
- 【BZOJ 3881】【COCI 2015】Divljak
http://www.lydsy.com/JudgeOnline/problem.php?id=3881 好难的一道题啊qwq 一开始我想对T建AC自动机,根本不可做. 正解是对S建AC自动机. fa ...
- 「NOI2018」屠龙勇士
「NOI2018」屠龙勇士 题目描述 小\(D\)最近在网上发现了一款小游戏.游戏的规则如下: 游戏的目标是按照编号\(1-n\)顺序杀掉\(n\) 条巨龙,每条巨龙拥有一个初始的生命 值ai .同时 ...
- 【容斥原理】【分解质因数】poj1091 跳蚤
题意转化为求一个线性组合a1*x1+a2*x2+...+an*xn+m*xn+1=1在什么时候可以有解.(ai在1~m的范围内任取) 易得当且仅当gcd(a1,a2,...,an)=1时可能有解. 然 ...
- mysql交叉表查询解决方案整理
交叉表是一种常用的分类汇总查询.使用交叉表查询,可以显示表中某个字段的汇总值,并将它们分组,其中一组列在数据表的左侧,另一组列在数据表的上部.行和列的交叉处可以对数据进行多种汇总计算,如:求和.平均值 ...