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 ...
随机推荐
- 【我要学python】愣头青之小数点精度控制
写在最前面:今天遇到了棘手的问题,看了两遍才看懂,本文属于转载+修改,原出处是Herbert's Blog 基础 浮点数是用机器上浮点数的本机双精度(64 bit)表示的.提供大约17位的精度和范围从 ...
- 基于wsimport生成代码的客户端
概述 wsimport是jdk自带的命令,可以根据wsdl文档生成客户端中间代码,基于生成的代码编写客户端,可以省很多麻烦. wsimport命令 wsimport的用法 wsimport [opti ...
- 【Spring学习】在Spring+Maven环境中使用Junit Test
在Spring+Maven环境中使用Junit Test 前言 以前我是很讨厌写测试代码的,总觉得测试用例是测试人员写的,现在想想自己真是Too yuong too simple,接触开发多了之后发现 ...
- If you want to allow applications containing errors to be published on the server
If you want to allow applications containing errors to be published on the server, enable the Allow ...
- vijos1889:天真的因数分解
题目链接 vijos1889:天真的因数分解 题解 同bzoj2440: [中山市选2011]完全平方数 就是改成了求有平方因子数,依旧考虑二分,只是把容斥系数取一下相反数,也就是把莫比乌斯函数求一个 ...
- AGC 026 C - String Coloring
题面在这里! 比较简单的折半搜索,推一下hash函数,要求正反最后相等就行了. #include<bits/stdc++.h> #define ll unsigned long long ...
- 【线段树区间合并】BZOJ1593-[Usaco2008 Feb]Hotel 旅馆
好无聊,以前写过没什么好讲的,水过.戳 #include<iostream> #include<cstdio> #include<cstdlib> #define ...
- MySort
实验概述: 本次试验的内容:模拟实现Linux下Sort -t : -k 2的功能.参考Sort的实现.提交码云链接和代码运行截图. 截图如下 实验过程 在实验课上真的很崩溃,可以说脑子里一团乱麻,下 ...
- FZU 2036 Log Calculator
思路:数学题! 给定a,b,求s=log2(2a+2b);转化为s=b+log2(2a-b+1),(a>b). 测试可以知道,当x>=32时,在精度范围内log2(2x+1)=x.否则将a ...
- 1.创建spring cloud父工程和子模块
创建父工程 idea创建父工程 idea创建一个工程.父工程管理公共资源 添加子模块 选择添加到父工程里面spring_cloud_parent 相应的子模块添加到父工程的pom.xml文件里