PHP上传文件代码练习2 (重复文章)
表单:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题</title>
</head>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="2097152">
<input type="file" name="filename[]" multiple="multiple" accept="image/jpeg"><br/><br/>
<input type="submit" value="上传">
</form>
</body>
</html>
函数部分:
<?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++;
} }elseif (is_string($file['name'])) {
$files[$i]=$file;
$i++;
# code...
} }
return $files;
} //上传文件函数 function uploadFiles($files){ $res=array();
//判断错误号
if($files['error']===UPLOAD_ERR_OK){ //判断文件大小
$maxsize=2097152;
if($files['size']>$maxsize){
$res['msg']=$files['name'].' 文件过大';
} //判断文件格式是否符合要求
$ext=strtolower(pathinfo($files['name'],PATHINFO_EXTENSION));
$extarray=['jpeg','jpg'];
if(!in_array($ext, $extarray)){
$res['msg']=$files['name'].' 格式不符合要求';
# code...
} //判断是否是真正的图片
$flag=true;
if($flag){
if(@!getimagesize($files['tmp_name'])){
$res['msg']=$files['name'].'不是真正的图片文件';
} } //判断是否是通过HTTP POST上传;
if(!is_uploaded_file($files['tmp_name'])){
$res['msg']=$files['name'].'不是通过HTTPPoSt上传';
}
if($res) return $res; //移动文件
$path='uploads';
if(!file_exists($path)){
mkdir($path,0777,true);
chmod($path,0777);
}
//唯一的文件名
$newname=md5(uniqid(microtime(true),true));
$destination=$path.'/'.$newname.'.'.$ext;
if(!move_uploaded_file($files['tmp_name'], $destination)){
$res['msg']=$files['name'].'文件移动失败';
}
$res['msg']=$files['name'].'上传成功';
$res['dest']=$destination;
return $res; }else{
switch ($files['error']) {
case 1:
$res['msg']=$files['name'].'文件超过了最大限制';
break;
case 2:
$res['msg']=$files['name'].'文件的大小超过了表单限制';
# code...
break;
case 3:
$res['msg']=$files['name'].'只有部分被上传';
# code...
break;
case 4:
$res['msg']='没有选择文件';
# code...
break;
case 6:
$res['msg']='找不到临时文件';
# code...
break;
case 7:
$res['msg']='系统错误';
# code...
break; }
return $res;
}
}
操作部分:
<?php
include('uploads_func.php'); $files=getFiles(); foreach ($files as $value) {
$res=uploadFiles($value);
echo $res['msg']."<br><br>";
# code...
}
PHP上传文件代码练习2 (重复文章)的更多相关文章
- iOS上传文件代码,自定义组装body
以下代码为上传文件所用代码,简单方便,搞了好久,终于知道这么简单的方式来上传. 其它类库也就是把这几句代码封装的乱七八糟得,让你老久搞不懂原理.不就是在body上面加点字符串,body下面加点字符串, ...
- ExtJS + fileuploadfield上传文件代码
后台服务端接收文件的代码: /** * 后台上传文件处理Action */ @RequestMapping(value = "/uploadFile", method=Reques ...
- php 上传文件代码
通过 PHP,能够把文件上传到server.里面加入一些图片的推断,假设不加推断文件的类型就能够上传随意格式的文件. 为了站点的安全,肯定不让上传php文件,假设有人进入你的后台,上传了一个php文件 ...
- java上传文件代码
import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;impo ...
- SpringMvc通过controller上传文件代码示例
上传文件这个功能用的比较多,不难,但是每次写都很别扭.记录在此,以备以后copy用. package com.**.**.**.web.api; import io.swagger.annotatio ...
- php上传文件代码解析
思想:把html的input标签组织成一个数组,然后去重 关键技术涉及的函数 is_dir mkdir move_uploaded_file() 涉及的数组 预定义数组$_FILES 步骤一:检查上传 ...
- git 和码云的上传文件代码操作
Git与Github的连接与使用 一 安装git软件 1.git介绍 ''' git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. 分布式相比于集中式的最大区别在于开发 ...
- javaWeb上传文件代码
javaweb两种方式的上传,1普通上传,2:jquery ajax后台上传,部分截图如下: 完成包下载,下载后倒入myeclipse工程即可,下载地址:http://files.cnblogs.co ...
- easyui 上传文件代码
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.IO;usi ...
随机推荐
- STL模板整理 全排列
概念: 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列.当m=n时所有的排列情况叫全排列.如果这组数有n个,那么全排列数为n!个. 比如a, ...
- [lampp] 不能通过互联网连接数据库 MySQL is not accessable via network
LAMPP安装目录下的/etc/my.cnf文件注释掉skip-networking #skip-networking#skip-networking
- ZOJ 3497 Mistwald
矩阵快速幂. 邻接矩阵的$P$次方就是走$P$步之后的方案数,这里只记录能否走到就可以了.然后再判断一下三种情况即可. #pragma comment(linker, "/STACK:102 ...
- 有一种感动叫ACM(WJMZBMR在成都赛区开幕式上的讲话)
各位选手,各位教练,大家好,我是来自清华大学交叉信息学院的陈立杰,今天很荣幸站在这里代表全体参赛选手发言.对于我来说,这是我第一次正式参加ACM的比赛.不过我跟ACM之间的缘分,大概在很早的时候就已经 ...
- Mysql远程连接报错:SQL Error (1130): Host '192.168.6.128' is not allowed to connect to this MySQL server
通过SQLyog连接linux中的MySQL报错问题:SQL Error (1130): Host '192.168.6.128' is not allowed to connect to this ...
- Python开发基础-Day21多态与多态性、绑定方法和非绑定方法
多态与多态性 多态 多态并不是一个新的知识 多态是指一类事物有多种形态,在类里就是指一个抽象类有多个子类,因而多态的概念依赖于继承 举个栗子:动物有多种形态,人.狗.猫.猪等,python的序列数据类 ...
- [BZOJ3167][P4099][HEOI2013]SAO(树形DP)
题目描述 Welcome to SAO ( Strange and Abnormal Online).这是一个 VR MMORPG, 含有 n 个关卡.但是,挑战不同关卡的顺序是一个很大的问题. 有 ...
- 【找规律】【递归】XVII Open Cup named after E.V. Pankratiev Stage 4: Grand Prix of SPb, Sunday, Octorber 9, 2016 Problem F. Doubling
题意: 给你一个n,问你R(n)对应的字符串长度最小的是啥. dp打个表出来,f(i)表示i值对应的字符串的最小长度,发现f(1)=1,f(2)=2,其他的情况下,若是偶数,则恰好在其外面加一对中括号 ...
- 【哈希】CDOJ1717 京电的神秘矩阵
对每个矩阵里的元素用两个大素数做双关键字哈希,丢进set即可. #include<cstdio> #include<iostream> #include<set> ...
- 【状态压缩DP】NOIP2005-river过河
[问题描述] 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看 ...