PHP文件上传设置和处理(多文件)
<!--upload.php文件内容-->
<?php
header("Content-Type:text/html;charset=utf-8");
/*
//原来$_FILES的内容
Array
(
[pic] => Array
(
[name] => Array
(
[0] => 175_2426_3ecb275c994a192.jpg
[1] => 195_4074_831a070561e20a0.jpg
[2] => 46348.jpg
[3] => 4e4b68e5a9334.jpg
)
[type] => Array
(
[0] => image/jpeg
[1] => image/jpeg
[2] => image/jpeg
[3] => image/jpeg
)
[tmp_name] => Array
(
[0] => C:\wamp\tmp\php30.tmp
[1] => C:\wamp\tmp\php31.tmp
[2] => C:\wamp\tmp\php32.tmp
[3] => C:\wamp\tmp\php33.tmp
)
[error] => Array
(
[0] => 0
[1] => 0
[2] => 0
[3] => 0
)
[size] => Array
(
[0] => 8374
[1] => 43274
[2] => 4052
[3] => 108521
)
)
)
//要转换成如下的格式
[pic] = array(
[0] => Array
(
[name] => 195_4074_831a070561e20a0.jpg
[type] => image/jpeg
[tmp_name] => C:\wamp\tmp\php45.tmp
[error] => 0
[size] => 43274
)
[1] => Array
(
[name] => 195_4074_831a070561e20a0.jpg
[type] => image/jpeg
[tmp_name] => C:\wamp\tmp\php45.tmp
[error] => 0
[size] => 43274
)
[2] => Array
(
[name] => 195_4074_831a070561e20a0.jpg
[type] => image/jpeg
[tmp_name] => C:\wamp\tmp\php45.tmp
[error] => 0
[size] => 43274
)
[3] => Array
(
[name] => 195_4074_831a070561e20a0.jpg
[type] => image/jpeg
[tmp_name] => C:\wamp\tmp\php45.tmp
[error] => 0
[size] => 43274
)
)
*/
$num = count($_FILES['pic']['name']);//长度4
for($i=0; $i<$num; $i++) {
//第一步: 判断错误
if($_FILES['pic']['error'][$i] > 0) {
switch($_FILES['pic']['error'][$i]) {
case 1:
echo "表示上传文件的大小超出了约定值。文件大小的最大值是在PHP配置文件中指定的,该指令是:upload_max_filesize<br>";
break;
case 2:
echo "表示上传文件大小超出了HTML表单隐藏域属性的MAX_FILE_SIZE元素所指定的最大值1M<br>";
break;
case 3:
echo "表示文件只被部分上传<br>";
break;
case 4:
echo "表示没有上传任何文件<br>";
break;
default:
echo "末知错误<br>";
}
continue;
}
//第二步: 判断类型
$arr = explode(".", basename($_FILES['pic']['name'][$i]));
$hz = array_pop($arr);
$allowtype =array("gif", "png", "jpg", "jpeg");
if(!in_array($hz, $allowtype)) {
echo "上传的类型不合法";
continue;
}
//第三步: 判断大小
$maxsize= 1000000;
if($_FILES['pic']['size'][$i] > $maxsize) {
echo "上传的文件超过了,{$maxsize}字节!";
continue;
}
//第四步, 上传后的文件名一定要设置
$tmpfile = $_FILES['pic']['tmp_name'][$i];
$srcname = "./uploads/".date("YmdHis").rand(100, 999).".".$hz;
//将临时目录下的上传的文件,复制到我指定目录下, 指定的名子就可以完成上传
if( move_uploaded_file($tmpfile, $srcname) ) {
echo "上传 {$_FILES['pic']['name'][$i]} 成功!<br>";
}else{
echo "上传失败!<br>";
}}
<!--upform.html文件内容-->
<form action="upload.php" method="post" enctype="multipart/form-data" >
name: <input type="text" name="username" value="" /><br>
<input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
up pic: <input type="file" name="pic[]" value=""><br>
up pic: <input type="file" name="pic[]" value=""><br>
up pic: <input type="file" name="pic[]" value=""><br>
up pic: <input type="file" name="pic[]" value=""><br>
<!--
$_FILES['pic']['name'][0]
$_FILES['pic']['name'][1]
$_FILES['pic']['name'][2]
-->
<input type="submit" value="upload" /><br>
</form>
PHP文件上传设置和处理(多文件)的更多相关文章
- PHP文件上传设置和处理(单文件)
<!--upload.php内容--><?php /* 修改php.ini的设置 file_uploads必须是On upload_max_filesize 设置上传文件的大小,此值 ...
- 表单多文件上传样式美化 && 支持选中文件后删除相关项
开发中会经常涉及到文件上传的需求,根据业务不同的需求,有不同的文件上传情况. 有简单的单文件上传,有多文件上传,因浏览器原生的文件上传样式及功能的支持度不算太高,很多时候我们会对样式进行美化,对功能进 ...
- struts文件上传,获取文件名和文件类型
struts文件上传,获取文件名和文件类型 Action中还有两个属 性:uploadFileName和uploadContentType,这两个属性分别用于封装上传文件的文件名.文件类型.这是S ...
- 【FTP】java FTPClient 文件上传内容为空,文件大小为0
问题:如题所述,使用FTPClient上传至FTP服务器, 表现如下:①文件大小为0 ②上传很小的文件,但是要花费很长的时间,20K要花费2分钟甚至更久 ③没有任何的报错,没有任何的乱码 解决方法: ...
- aws s3文件上传设置accesskey、secretkey、sessiontoken
背景: 最近跟进的项目会封装aws S3资源管理细节,对外提供获取文件上传凭证的API,业务方使用获取到的凭证信息直接请求aws进行文件上传.因此,测试过程需要验证S3文件上传的有效性.aws官网有提 ...
- kindeditor文件上传设置文件说明为上传文件名(JSP版)
编辑器换成kindeditor时发现文件上传后,直接点确定,<a>便签中的内容显示的是文件路径,不是我想要的文件名,我试了百度上的一些设置方法都不行的,百度上大部分都是修改pugins/i ...
- php文件上传参考配置与大文件上传
PHP用超级全局变量数组$_FILES来记录文件上传相关信息的,在php文件上传之前,可通过调节php.ini中相关配置指令,来控制上传相关细节. 1.file_uploads=on/off ...
- jspsmartupload 文件上传让input数据和文件上传同时提交
一.使用原因: 文件上传时,表单的属性中必须要有multipart/form-data,如以下例子: <form name="form_post" class="a ...
- ASP.NET Core WEB API 使用element-ui文件上传组件el-upload执行手动文件文件,并在文件上传后清空文件
前言: 从开始学习Vue到使用element-ui-admin已经有将近快两年的时间了,在之前的开发中使用element-ui上传组件el-upload都是直接使用文件选取后立即选择上传,今天刚好做了 ...
随机推荐
- 6.3 lambda 表达式
6.3.1 lambda 表达式是一个可传递的代码块,可以在以后执行一次或者多次. 思考(如何按指定时间间隔完成工作,将这个工作放在一个ActionListener的actionPerformed方法 ...
- Android(java)学习笔记148:网易新闻RSS客户端应用编写逻辑过程
1.我们的项目需求是编写一个新闻RSS浏览器,RSS(Really Simple Syndication)是一种描述和同步网站内容的格式,是使用最广泛的XML应用.RSS目前广泛用于网上新闻频道,bl ...
- 利用python实现整数转换为任意进制字符串
假设你想将一个整数转换为一个二进制和十六进制字符串.例如,将整数 10 转换为十进制字符串表示为 10 ,或将其字符串表示为二进制 1010 . 实现 以 2 到 16 之间的任何基数为参数: def ...
- Python字符编码及字符串
字符编码 字符串是一种数据类型,但是字符串比较特殊的是编码问题,计算机只能处理数字,处理文本就需要将文本转换成数字. 计算机设计时8bit作为一个字节byte,一个字节能表示的最大整数就是(2^8)- ...
- idea下使用码云插件进行git提交
1)下载插件 file->setting->plugins->右侧搜索gitee->安装->重启ide 2)配置版本控制 file->setting->Ver ...
- Python基础篇 -- 字符串
字符串 字符串是不可变的对象,任何操作对原字符串是不会有任何影响的. 索引和切片 索引 . 索引就是下标, 下标从 0 开始, 使用[] 来获取数据 s1 = "0123456" ...
- ★房贷计算器 APP
一.目的 1. 这是一个蛮有用的小工具 2. 之前看了很多demo,第一次来完全的自己实现一个APP 3. 完成之后提交 App Store 4. 作为Good Coder的提交审核材料 二.排期 周 ...
- NSLocale
1.创建本地化对象 // 根据本地标识符创建本地化对象 NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier"e ...
- Python学习笔记3(字典)
创建字典 dict函数 字典的格式化字符串 字典方法 clear copy fromkeys 序列是一个按照一定顺序将值进行组织的数据结构形式,可以通过索引对其进行征引.另外还有一种数据结构是通过名字 ...
- CentOS7服务器上部署Oracle客户端
环境 操作系统: CentOS7.2.1511 x86_64 准备安装包 在这个网站:https://www.oracle.com/technetwork/topics/linuxx86-64soft ...