PHP--规范化的文件上传
<form action="" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="300000"><!--表单隐藏域:MAX_FILE_SIZE。意思是接收文件的最大尺寸-->
<input type="file" name="up_picture">
<input type="submit" name="submit" value="提交">
</form>
<?
php
if (!empty($_FILES['up_picture'])) {//推断上传内容是否为空
if ($_FILES['up_picture']['error'] > 0) {//推断上传错误信息
echo "上传错误:";
switch ($_FILES['up_picture']['error']) {
case 1:
echo "上传文件大小超出配置文件规定值";
break;
case 2:
echo "上传文件大小超出表单中的约定值";
break;
case 3:
echo "上传文件不全";
break;
case 4:
echo "没有上传文件";
break;
}
} else {
list($maintype, $subtype) = explode("/", $_FILES['up_picture']['type']);
if ($maintype != "image" || $subtype != "png") {
echo "上传文件格式不对";
} else {
if (!is_dir("./upfile")) {//推断指定文件夹是否存在
mkdir("./upfile");//创建文件夹
}
$path = './upfile/' . time() . strtolower(strstr($_FILES['up_picture']['name'], "."));//定义上传文件名称和存储位置
if (is_uploaded_file($_FILES['up_picture']['tmp_name'])) {//推断文件上传是否为HTTP POST上传
if (!move_uploaded_file($_FILES['up_picture']['tmp_name'],$path)) {//运行上传操作
echo "上传失败";
} else {
echo "文件:" . time() . strtolower(strstr($_FILES['up_picture']['name'], ".")) . "上传成功,大小为:" . $_FILES['up_picture']['size'] . "字节";
}
} else {
echo "上传文件:".$_FILES['up_picture']['name']."不合法";
}
}
}
}
注:
$_FILES变量存储的是上传文件的相关信息,这些信息对于上传功能有非常大的作用。
该变量是一个二维数组。
保存的信息例如以下表
| 元素名称 | 说明 |
|---|---|
| $_FILES[filename][name] | 存储了上传文件的文件名称,如test.txt,tu.jpg |
| $_FILES[filename][size] | 存储了文件大小。单位为字节 |
| $_FILES[filename][tmp_name] | 文件上传时,首先在暂时文件夹中被保存成一个暂时文件。该变量为暂时文件名称。 |
| $_FILES[filenam][type] | 上传文件的类型。 |
| $_FILES[filename][error] |
存储了上传文件的结果。
假设返回0,则说明文件上传成功。 |
UPLOAD_ERR_OK 值:0; 没有发生错误,文件上传成功
UPLOAD_ERR_INI_SIZE 值:1; 上传的文件超过了 php.ini 中 upload_max_filesize选项限制的值
UPLOAD_ERR_FORM_SIZE 值:2;上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值
UPLOAD_ERR_PARTIAL 值:3; 文件仅仅有部分被上传
UPLOAD_ERR_NO_FILE 值:4;没有文件被上传, 值:5; 上传文件大小为0
如需了解具体的文件上传方法请浏览http://blog.csdn.net/qq_28602957/article/details/51106366
PHP--规范化的文件上传的更多相关文章
- 从原理角度解析Android (Java) http 文件上传
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/23781773 文件上传是我们项目中经常使用的功能,一般我们的服务器可能都是web ...
- 文件上传的三种模式-Java
文件上传的三种方式-Java 前言:因自己负责的项目(jetty内嵌启动的SpringMvc)中需要实现文件上传,而自己对java文件上传这一块未接触过,且对 Http 协议较模糊,故这次采用渐进的方 ...
- html+大文件上传
前言:因自己负责的项目(jetty内嵌启动的SpringMvc)中需要实现文件上传,而自己对java文件上传这一块未接触过,且对 Http 协议较模糊,故这次采用渐进的方式来学习文件上传的原理与实践. ...
- jquery.uploadify文件上传组件
1.jquery.uploadify简介 在ASP.NET中上传的控件有很多,比如.NET自带的FileUpload,以及SWFUpload,Uploadify等等,尤其后面两个控件的用户体验比较好, ...
- 11、Struts2 的文件上传和下载
文件上传 表单准备 要想使用 HTML 表单上传一个或多个文件 须把 HTML 表单的 enctype 属性设置为 multipart/form-data 须把 HTML 表单的method 属性设置 ...
- Java FtpClient 实现文件上传服务
一.Ubuntu 安装 Vsftpd 服务 1.安装 sudo apt-get install vsftpd 2.添加用户(uftp) sudo useradd -d /home/uftp -s /b ...
- 小兔Java教程 - 三分钟学会Java文件上传
今天群里正好有人问起了Java文件上传的事情,本来这是Java里面的知识点,而我目前最主要的精力还是放在了JS的部分.不过反正也不麻烦,我就专门开一贴来聊聊Java文件上传的基本实现方法吧. 话不多说 ...
- ,net core mvc 文件上传
工作用到文件上传的功能,在这个分享下 ~~ Controller: public class PictureController : Controller { private IHostingEnvi ...
- Web开发安全之文件上传安全
很长一段时间像我这种菜鸡搞一个网站第一时间反应就是找上传,找上传.借此机会把文件上传的安全问题总结一下. 首先看一下DVWA给出的Impossible级别的完整代码: <?php if( iss ...
- AutoIt实现Webdriver自动化测试文件上传
在运用WebDriver进行自动化测试时,由于WebDriver自身的限制,对于上传文件时Windows弹出的文件选择窗口无法控制,通过在网上查找资料锁定使用AutoIt来控制文件上传窗口. Auto ...
随机推荐
- AES 加密位: 128位,加密模式:CBC, 填充模式:Zeros
// AES 加密 public byte[] AESEncrypt(string text) { byte[] data = Encoding.Unicode.GetBytes(text); Sym ...
- oc15--文档安装
// // main.m // 修改项目模板 /* 工程名称: 文件名称: 创建者 : 创建时间: 版权 : 修改人 : 修改时间: */ #import <Foundation/Foundat ...
- 二重积分的计算 —— 交换积分顺序(exchange the order of integration)
交换积分顺序的诀窍在数形结合: 1. 几句顺口溜 后积先定限,限内穿条线,先交下限写,后交上限见 先积 x,画横线(平行于 x 轴),右减左: 先积 y,画竖线(平行于 y 轴),上减下: 2. 简单 ...
- 【转】IOS中Json解析的四种方法
原文网址:http://blog.csdn.net/enuola/article/details/7903632 作为一种轻量级的数据交换格式,json正在逐步取代xml,成为网络数据的通用格式. 有 ...
- java.sql.SQLException: Field 'id' doesn't have a default value解决方案
转自:https://blog.csdn.net/xinghuo0007/article/details/51810867 自增长:java.sql.SQLException: Field 'id' ...
- Angular2之路由学习笔记
目前工作中项目的主要技术栈是Angular2 在这里简单记录一下遇到的问题以及解决方案. 这篇笔记主要记录Angular2 的路由. 官方文档链接:https://angular.cn/docs/ts ...
- Android源代码分支、版本号、支持设备列表
Build Branch Version Supported devicesOPD3.170816.023 android-8.0.0_r34 Oreo Pixel 2 XL, Pixel 2OPD1 ...
- BZOJ 2794 DP
思路: 考虑把询问离线 按照m排序 物品按照a排序 f[i]表示c[j]的和到i b的最大值 背包就好 O(nk)竟然能过-- //By SiriusRen #include <cstdio&g ...
- C#怎么清除字符串中HTML标签。。。
因为用到了一款编辑器的原因,使得数据库中保存的数据会夹杂着一些HTML标签,之后导出的数据中就会出现一些不同的HTML的标签.严重影响用户的视觉体验(主要自己都看不下去了)... 下面是我将DataT ...
- P1982 小朋友的数字
题目描述 有 n 个小朋友排成一列.每个小朋友手上都有一个数字,这个数字可正可负.规定每个 小朋友的特征值等于排在他前面(包括他本人)的小朋友中连续若干个(最少有一个)小朋 友手上的数字之和的最大值. ...