PHP 文件上传下载
简介:这是PHP 文件上传下载的详细页面,介绍了和php,有关的知识、技巧、经验,和一些php源码等。
class='pingjiaF' frameborder='0' src='http://biancheng.dnbcw.info/pingjia.php?id=329769' scrolling='no'>1. php.ini 配置
;;;;;;;;;;;;;;;;;;; ; Resource Limits ; 资源限制 ;;;;;;;;;;;;;;;;;;; ; Maximum execution time of each script, in seconds ; http://php.net/max-execution-time ; Note: This directive is hardcoded to 0 for the CLI SAPI max_execution_time = 30 ; Maximum amount of time each script may spend parsing request data. It's a good ; idea to limit this time on productions servers in order to eliminate unexpectedly ; long running scripts. ; Note: This directive is hardcoded to -1 for the CLI SAPI ; Default Value: -1 (Unlimited) ; Development Value: 60 (60 seconds) ; Production Value: 60 (60 seconds) ; http://php.net/max-input-time max_input_time = 60 ; Maximum input variable nesting level ; http://php.net/max-input-nesting-level ;max_input_nesting_level = 64 ; Maximum amount of memory a script may consume (128MB) ; http://php.net/memory-limit memory_limit = 128M
max_execution_time 每个脚本页面完成执行操作的最大时间,单位是秒。如果为-1,则没有限制
max_input_time 每个脚本页面处理请求数据的最大时间,单位是秒。如果为-1,则没有限制
memory_limit 一个脚本页面所能消耗的最大内存
; Maximum size of POST data that PHP will accept. ; http://php.net/post-max-size post_max_size = 8M
PHP通过表单POST所能接收的最大值,包括表单里的所有项。
;;;;;;;;;;;;;;;; ; File Uploads ; ;;;;;;;;;;;;;;;; ; Whether to allow HTTP file uploads. ; http://php.net/file-uploads file_uploads = On ; Temporary directory for HTTP uploaded files (will use system default if not ; specified). ; http://php.net/upload-tmp-dir upload_tmp_dir = "e:/wamp/tmp" ; Maximum allowed size for uploaded files. ; http://php.net/upload-max-filesize upload_max_filesize = 2M
file_uploads 是否允许HTTP上传,默认为on,即为开启,无需修改
upload_tmp_dir 文件上传时的临时存储目录。如果没有指定,会用系统默认的临时文件夹
upload_max_filesize 允许上传的文件的最大值
2. 页面设置 3个条件缺一不可
(1)type属性设置为file
(2)form的enctype="multipart/form-data"
(3)method="post"
<form action="" method="post" enctype="multipart/form-data"> <input name="filename" type="file"/> <input type="submit" value="enter"/> </form>
<input type="hidden" name="MAX_FILE_SIZE" value="1024000"/>
建议在上传表单中增加一个hidden隐藏域,允许上传的最大字节数。当文件上传大于1MB时,$FILES中的error值将返回2
3. bool move_uploaded_file(string filename,string destination) 函数是PHP中专门用来上传文件的。
filename 上传文件的临时文件名,即$_FILES[tmp_name]
destination 上传后保存的新的路径和名称
move_uploaded_file() 作用只是将文件换个地方保存,这是出于安全的考虑
bool is_uploaded_file(string filename) 判断文件是否为POST上传
<?php header('Content-Type:text/html;charset=utf-8'); $tmparr=$_FILES['filename']; if($tmparr['error']==0){ if (is_uploaded_file($tmparr['tmp_name'])) { if (move_uploaded_file($tmparr['tmp_name'], $tmparr['name'])) { echo "上传成功"; }else { echo "<script>alert('文件不合法');history.go(-1);</script>"; } }else { echo "<script>alert('非法操作');history.go(-1);</script>"; } }else { echo "<script>alert('上传错误,错误类型: ".$tmparr['error']."');history.go(-1);</script>"; } ?>
4. 实现下载 实现下载最常用的方法通过链接下载和通过header()函数下载。