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 ...
随机推荐
- POJ 2318 TOYS(点与直线的关系 叉积&&二分)
题目链接 题意: 给定一个矩形,n个线段将矩形分成n+1个区间,m个点,问这些点的分布. 题解: 思路就是叉积加二分,利用叉积判断点与直线的距离,二分搜索区间. 代码: 最近整理了STL的一些模板,发 ...
- Android Theme.AppCompat.Light的解决方法
styles.xml中<style name="AppBaseTheme" parent="Theme.AppCompat.Light">提示如下错 ...
- Loj#6434「PKUSC2018」主斗地(搜索)
题面 Loj 题解 细节比较多的搜索题. 首先现将牌型暴力枚举出来,大概是\(3^{16}\)吧. 然后再看能打什么,简化后无非就三种决策:单牌,\(3+x\)和\(4+x\). 枚举网友打了几张\( ...
- [BZOJ3167][P4099][HEOI2013]SAO(树形DP)
题目描述 Welcome to SAO ( Strange and Abnormal Online).这是一个 VR MMORPG, 含有 n 个关卡.但是,挑战不同关卡的顺序是一个很大的问题. 有 ...
- 【插头dp】CDOJ1690 这是一道比CCCC简单题难的简单题
最裸的插头dp,可参见大白书. #include<cstdio> #include<cstring> using namespace std; #define MOD 1000 ...
- view加阴影和边框
UIImageView *imgvPhoto = [UIImageView alloc] init]; //添加边框 CALayer *layer = [_imgvPhoto layer]; ...
- LeetCode 771. 宝石与石头(java)
给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头. S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石. J 中的字母不重复,J 和 S中的所有字符都是字母 ...
- JavaScript的深拷贝与浅拷贝
深拷贝和浅拷贝是在面试中经常遇到的问题.今天在这里总结一下. 深拷贝与浅拷贝的问题,涉及到JavaScript的变量类型,先来说说变量的类型,变量类型包括基本类型和引用类型. 基本类型:Undefin ...
- [典型漏洞分享]一个典型的XSS盲打漏洞可导致全网用户cookie被盗取
偶平时在做安全测试时,一般是以发现问题为主,点到为止,但做安全的同学可能也遇到过这样的问题,当你尝试向开发的同学描述一个漏洞危害怎么怎么样的时候,双方经常会有一种鸡同鸭讲的感觉,甚至他们觉得我们在夸大 ...
- Dell最近的几款显示器看上去还不错的样子
发现最近戴尔最近发布了两款的4k显示器P2415Q和P2715Q,价格还比较平易近人,淘宝价24寸3700,27寸4700,让人有点心动了.基本参数如下: 3840*2160分辨率 亮度350cd/m ...