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 相关文章推荐
PHP has encountered an Access Violation
Jan 15 PHP
如何从一个php文件向另一个地址post数据,不用表单和隐藏的变量的
Mar 06 PHP
应用开发中涉及到的css和php笔记分享
Aug 02 PHP
php数组函数序列之end() - 移动数组内部指针到最后一个元素,并返回该元素的值
Oct 31 PHP
thinkphp实现图片上传功能分享
Mar 04 PHP
PHP中让curl支持sock5的代码实例
Jan 21 PHP
php通过ksort()函数给关联数组按照键排序的方法
Mar 18 PHP
简介PHP的Yii框架中缓存的一些高级用法
Mar 29 PHP
PHP基于单例模式编写PDO类的方法
Sep 13 PHP
php微信公众平台交互与接口详解
Nov 28 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
Jan 16 PHP
Laravel框架路由和控制器的绑定操作方法
Jun 12 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
smarty中先strip_tags过滤html标签后truncate截取文章运用
2010/10/25 PHP
PHP CLI模式下的多进程应用分析
2013/06/03 PHP
Thinkphp 框架基础之源码获取、环境要求与目录结构分析
2020/04/27 PHP
为原生js Array增加each方法
2012/04/07 Javascript
jquery 触发a链接点击事件解决方案
2013/05/02 Javascript
使用focus方法让光标默认停留在INPUT框
2014/07/29 Javascript
Bootstrap每天必学之栅格系统(布局)
2015/11/25 Javascript
探讨:JavaScript ECAMScript5 新特性之get/set访问器
2016/05/05 Javascript
jQuery学习心得总结(必看篇)
2016/06/10 Javascript
浅谈JavaScript对象与继承
2016/07/10 Javascript
手机浏览器 后退按钮强制刷新页面方法总结
2016/10/09 Javascript
详解mpvue中小程序自定义导航组件开发指南
2019/02/11 Javascript
jquery+css实现Tab栏切换的代码实例
2019/05/14 jQuery
python实现360皮肤按钮控件示例
2014/02/21 Python
python根据时间生成mongodb的ObjectId的方法
2015/03/13 Python
Python中pygame安装方法图文详解
2015/11/11 Python
Python 列表理解及使用方法
2017/10/27 Python
TensorFLow用Saver保存和恢复变量
2018/03/10 Python
python文本数据相似度的度量
2018/03/12 Python
python3下实现搜狗AI API的代码示例
2018/04/10 Python
pandas数据分组和聚合操作方法
2018/04/11 Python
python实现学员管理系统
2019/02/26 Python
python程序控制NAO机器人行走
2019/04/29 Python
python实现登录密码重置简易操作代码
2019/08/14 Python
如何使用python的ctypes调用医保中心的dll动态库下载医保中心的账单
2020/05/24 Python
HTML5 Canvas阴影使用方法实例演示
2013/08/02 HTML / CSS
HTML5中5个简单实用的API
2014/04/28 HTML / CSS
iframe跨域的几种常用方法
2019/11/11 HTML / CSS
西门豹教学反思
2014/02/04 职场文书
2014全国两会心得体会
2014/03/17 职场文书
三年级学生评语
2014/04/23 职场文书
机械工程及自动化专业求职信
2014/09/03 职场文书
2014年文明创建工作总结
2014/11/25 职场文书
2014年师德师风工作总结
2014/11/25 职场文书
员工工作表现自我评价
2015/03/06 职场文书
新郎新娘致辞
2015/07/31 职场文书