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 ...
随机推荐
- 【剑指offer】面试题 2. 实现 Singleton 模式
面试题 2. 实现 Singleton 模式 题目:设计一个类,我们只能生成该类的一个实例. 单例模式:确保一个类只有一个实例,并提供了一个全局访问点. Java 实现 1.饿汉模式 //饿汉模式 p ...
- POJ 1655.Balancing Act-树的重心(DFS) 模板(vector存图)
Balancing Act Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 17497 Accepted: 7398 De ...
- Python进阶:@property 动态属性
Python进阶:@property 动态属性 Python 动态属性的概念可能会被面试问到,在项目当中也非常实用,但是在一般的编程教程中不会提到,可以进修一下. 先看一个简单的例子.创建一个 Stu ...
- React Hooks useState为什么顺序很重要
一个Function Component的state状态整体是作为memoizedState存在FIber中的. function执行时,首先取memoizedState第一个base state,作 ...
- Poj2182 Lost Cows(玄学算法)
题面 Poj 题解 不难发现最后一位就是\(pre[n]+1\),然后消除这个位置对其他位置的贡献,从左到右扫一遍,必定有至少一个位置可以得出,循环这个过程,\(O(n^2)\)出解. #includ ...
- 洛谷——P4018 Roy&October之取石子
P4018 Roy&October之取石子 题目背景 Roy和October两人在玩一个取石子的游戏. 题目描述 游戏规则是这样的:共有n个石子,两人每次都只能取p^kpk个(p为质数,k为自 ...
- changing chmod for files but not directories
find . -type f -print0 | xargs -0 chmod 644
- UML对象图、包图
对象图(Object Diagram)显示了一组对象和他们之间的关系.使用对象图阿狸说明数据结构,类图中的类或组件等实例的快照.对象图和类图一样,反应了系统的静态过程,但它是以实际的或原型化为基础来表 ...
- Bomb Enemy -- LeetCode
Given a 2D grid, each cell is either a wall 'W', an enemy 'E' or empty '0' (the number zero), return ...
- POJ2975 Nim 博弈论 尼姆博弈
http://poj.org/problem?id=2975 题目始终是ac的最大阻碍. 问只取一堆有多少方案可以使当前局面为先手必败. 显然由尼姆博弈的性质可以知道需要取石子使所有堆石子数异或和为0 ...