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 ...
随机推荐
- Bzoj 3498 Cakes(三元环)
题面(权限题就不放题面了) 题解 三元环模板题,按题意模拟即可. #include <cstdio> #include <cstring> #include <vecto ...
- http://download.eclipse.org/technology/m2e/releases install error
Can you try running Eclipse as Admin and try this again?. Let me know how that goes. what is the upd ...
- 单能X射线产生方法
主要是荧光 利用布拉格准则, 关键词如下.. 国内有些专利 monochromating crystal spectrometer 物理实验设备名称翻译 ... 单色光检糖计 monochromati ...
- Python开发基础-Day14正则表达式和re模块
正则表达式 就其本质而言,正则表达式(或 re)是一种小型的.高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现.正则表达式模式被编译成一系列的字节码,然后由用 ...
- JZYZOJ1379天才的约数和 数论 约数和
http://172.20.6.3/Problem_Show.asp?id=1379 易得n=a*b2/b1: 需要注意算出n之后要判断n的约数和是否等于a,这里需要用约数和定理递归,递归前求一下 ...
- kong结合consul
早期版本 ./etcdctl ls / --recursive /name /name1 /name1/wyc /name1/wu /name1/chao /name1/chao/age ------ ...
- 搭建MySQL的主从、半同步、主主复制架构
复制其最终目的是让一台服务器的数据和另外的服务器的数据保持同步,已达到数据冗余或者服务的负载均衡.一台主服务器可以连接多台从服务器,并且从服务器也可以反过来作为主服务器.主从服务器可以位于不同的网络拓 ...
- iOS笔记,得到一个控件的坐标
[showBtn.superView convertRect:showBtn.frame toView:nil]: 参数从后往前理解: toView-->指的目标控件的坐标需要在哪个view上 ...
- spring boot 利用redisson实现redis的分布式锁
原文:http://liaoke0123.iteye.com/blog/2375469 利用redis实现分布式锁,网上搜索的大部分是使用java jedis实现的. redis官方推荐的分布式锁实现 ...
- 微服务:spring-cloud-archaius 起步
原文:http://blog.csdn.net/qq_18675693/article/details/53337941 微服务:spring-cloud-archaius 起步 原创 2016年11 ...