PHP 文件上传全攻略


Posted in PHP onApril 28, 2010

1.表单部分
允许用户上传文件,在HTML表单的声明中要加上一个上传的属性:
enctype = 'multipart/form-data'
表单的method必须是POST
表单选项MAX_FILE_SIZE隐藏域用于限制上传文件大小,它必须放在文件表单元素前面,单位为字节。
如:

<form enctype='multipart/form-data' id='aa' name='aaa' method='post' action='xxx.php'> 
<input type='hidden' name='MAX_FILE_SIZE' value='2621114' /> 
<input name='upload_file' type='file' /> 
</form>

2.处理上传文件
上传时,PHP收到关于该文件的信息数组,这些信息可以在$_FILES这个超级全局数组中找到。
如:如果表单中的文件输入框名字为upload_file,那么关于该文件的所有信息都包含在数组$_FILES['upload_file']里面。
如:客户上传了一个“aaa.jpg”的图片数组值如下:
name "p5pp.jpg" 上传时文件的名字
type “image/jpeg" 文件类型
tmp_name "/tmp/phpjksdf" 服务器端的临时文件名
error 上传错误的返回值
size 2045 文件实际大小

上面数组里面的error会返回不同的常量值,如下:
UPLOAD_ERR_OK 没有错误发生,文件上传成功
UPLOAD_ERR_INI_SIZE 文件大小超过了PHP.INI中upload_max_filesize选项限制的值
UPLOAD_ERR_FORM_SIZE 上传文件的大小超过了HTML表单中MAX_FILE_SIZE选项值。可在程序中检查表单$FILES ['up_file']['size']来处理
UPLOAD_ERR_PARTIAL 文件只有部分被上传
UPLOAD_ERR_NO_FILE 用户没有提供任何文件上传
上传后处理的具体例子:

if(!move_uploaded_file($_FILES['f']['tmp_name'],"uploads/".$_FILES['f']['name'].".jpg")){ 
echo "error"; 
}

函数:
move_uploaded_file 移动上传的临时文件到指定的目录下
例子:
move_uploaded_file('临时文件名','指定文件路径')

is_uploaded_file 判断是否是通过http Post上传的文件
例子:

if(!is_uploaded_file($_FILES['f']['tmp_name'])){ 
echo '非法'; 
}

3.相关参数

PHP上传设计到的php.ini中的参数:
file_uploads 是否允许上传文件,默认ON

upload_tmp_dir 上传文件防止的临时目录,未指定则使用系统默认位置

upload_max_filesize 允许上传文件的大小的最大值,默认为2M

post_max_size 控制采用POST方法进行一次表单提交中PHP所能接受的最大数据量,如果希望用PHP文件上传,则此值要改为比upload_max_filesize要大

max_input_time 以秒为单位对通过POST/GET/PUT方式接受数据时间进行限制。

memory_limit 为了避免正在运行的脚本大量使用系统内存,PHP允许定义内存使用限额。通过设置此参数来制定单个脚本程序可以使用的最大内存容量,应适当大于post_max_size值

max_execution_time 用来设置在强制终止脚本前PHP等待脚本执行完毕的时间,单位秒。次选项可限制死循环脚本,但当存在一个长时间的合法活动时(如:上传大文件),这项功能也会导致操作失败。这样情况下必须考虑将此变量增加。

4.考虑多文件上传
可以利用$_FILES数组就可以轻松实现多文件上传。$_FILES数组可以获取客户端表单里面所有的file域内容,从而获得所有在同一表单上传的文件。

5.突破上传的内存限制

方法一:
修改php.ini中memory_limit值,改为更大,如 64M
方法二:
使用Apache Rewrite方法,动态修改memory_limit的值。首先建立一个.htaccess文件,保存在上传文件程序的 当前目录即可.代码如下:
php_value memory_limit 100M
php_value post_max_size 30M
php_value upload_max_filesize 30M
php_value max_execution_time 300
php_value max_input_tim 300
php_value display_errors On

PHP 相关文章推荐
计算2000年01月01日起到指定日的天数
Oct 09 PHP
php中取得URL的根域名的代码
Mar 23 PHP
gd库图片下载类实现下载网页所有图片的php代码
Aug 20 PHP
浅谈PHP强制类型转换,慎用!
Jun 06 PHP
浅析Yii中使用RBAC的完全指南(用户角色权限控制)
Jun 20 PHP
PHP实现UTF-8文件BOM自动检测与移除实例
Nov 05 PHP
php实现用手机关闭计算机(电脑)的方法
Apr 22 PHP
golang与php实现计算两个经纬度之间距离的方法
Jul 22 PHP
PHP编程计算文件或数组中单词出现频率的方法
May 22 PHP
解决form中action属性后面?传递参数 获取不到的问题
Jul 21 PHP
PHP缓存工具XCache安装与使用方法详解
Apr 09 PHP
PHP-FPM和Nginx的通信机制详解
Feb 01 PHP
PHP GD 图像处理组件的常用函数总结
Apr 28 #PHP
PHP 开发环境配置(测试开发环境)
Apr 28 #PHP
PHP 开发环境配置(Zend Studio)
Apr 28 #PHP
PHP 开发环境配置(Zend Server安装)
Apr 28 #PHP
PHP开发环境配置(MySQL数据库安装图文教程)
Apr 28 #PHP
PHP PDO函数库详解
Apr 27 #PHP
PHP执行linux系统命令的常用函数使用说明
Apr 27 #PHP
You might like
DC动画很好看?新作烂得令人发指,名叫《红色之子》
2020/04/09 欧美动漫
浅谈json_encode用法
2015/03/05 PHP
Laravel框架下载,安装及路由操作图文详解
2019/12/04 PHP
Centos7安装swoole扩展操作示例
2020/03/26 PHP
点击下载链接 弹出页面实现代码
2009/10/01 Javascript
js 小贴士一星期合集
2010/04/07 Javascript
利用jquery操作select下拉列表框的代码
2010/06/04 Javascript
JS对象转换为Jquery对象示例
2014/01/26 Javascript
分享jQuery网页元素拖拽插件
2020/12/01 Javascript
基于JavaScript实现带缩略图的轮播效果
2017/01/12 Javascript
如何在Angular2中使用jQuery及其插件的方法
2017/02/09 Javascript
canvas红包照片实例分享
2017/02/28 Javascript
解决JS外部文件中文注释出现乱码问题
2017/07/09 Javascript
在vue中,v-for的索引index在html中的使用方法
2018/03/06 Javascript
ES7之Async/await的使用详解
2019/03/28 Javascript
详解Nuxt内导航栏的两种实现方式
2020/04/16 Javascript
Python实现的一个简单LRU cache
2014/09/26 Python
Python实现将n个点均匀地分布在球面上的方法
2015/03/12 Python
详细解析Python中的变量的数据类型
2015/05/13 Python
深入讲解Python中的迭代器和生成器
2015/10/26 Python
python3获取两个日期之间所有日期,以及比较大小的实例
2018/04/08 Python
python单线程文件传输的实例(C/S)
2019/02/13 Python
详解Python图像处理库Pillow常用使用方法
2019/09/02 Python
python opencv 实现对图像边缘扩充
2020/01/19 Python
详解用Pytest+Allure生成漂亮的HTML图形化测试报告
2020/03/31 Python
详解pycharm配置python解释器的问题
2020/10/15 Python
Cpython解释器中的GIL全局解释器锁
2020/11/09 Python
python判断all函数输出结果是否为true的方法
2020/12/03 Python
台湾百利市购物中心:e-Payless
2017/08/16 全球购物
2014厂务公开实施方案
2014/02/17 职场文书
《那片绿绿的爬山虎》教学反思
2014/02/27 职场文书
上课随便讲话检讨书
2014/09/12 职场文书
博士生专家推荐信
2015/03/25 职场文书
2015年销售部工作总结范文
2015/04/27 职场文书
2015年七夕情人节活动方案
2015/05/06 职场文书
漫画「你在春天醒来」第10卷封面公开
2022/03/21 日漫