PHP 文件上传下载
1. php.ini ?配置 ? ?
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | ;;;;;;;;;;;;;;;;;;;
; Resource Limits ; <span style= "white-space: normal;" >资源限制</span>
;;;;;;;;;;;;;;;;;;;
; Maximum execution time of each script, in seconds
; http:
; 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:
max_input_time = 60
; Maximum input variable nesting level
; http:
;max_input_nesting_level = 64
; Maximum amount of memory a script may consume (128MB)
; http:
memory_limit = 128M
|
登入後複製
???max_execution_time 每个脚本页面完成执行操作的最大时间,单位是秒。如果为-1,则没有限制
?? max_input_time 每个脚本页面处理请求数据的最大时间,单位是秒。如果为-1,则没有限制
?? memory_limit 一个脚本页面所能消耗的最大内存
?
1 2 3 | ; Maximum size of POST data that PHP will accept.
; http:
post_max_size = 8M
|
登入後複製
?? ?PHP通过表单POST所能接收的最大值,包括表单里的所有项。
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | ;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;
; Whether to allow HTTP file uploads.
; http:
file_uploads = On
; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
; http:
upload_tmp_dir = "e:/wamp/tmp"
; Maximum allowed size for uploaded files.
; http:
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"
?
?
1 2 3 4 | <form action= "" method= "post" enctype= "multipart/form-data" >
<input name= "filename" type= "file" />
<input type= "submit" value= "enter" />
</form>
|
登入後複製
?
???
?? 建议在上传表单中增加一个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上传
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?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>";
}
?>
|
登入後複製
?? $_FILES[]['name']: ? ? ? ? ? 客户端源文件名
?? $_FILES[]['type']: ? ? ? ? ? ? 上传文件的类型
?? $_FILES[]['size']: ? ? ? ? ? ? ?上传文件的字节数
?? $_FILES[]['tmp_name']: ? ?上传后在服务器上的临时存储文件名
?? $_FILES[]['error']: ? ? ? ? ? ? 上传文件的错误代码
?
4. ?实现下载 ?实现下载最常用的方法通过链接下载和通过header()函数下载。
?
echo "".$filen."
";
?
"" '' .三者如何配合使用?
?
?
?
?
?
?