Home  >  Article  >  php教程  >  PHP实现文件上传功能

PHP实现文件上传功能

WBOY
WBOYOriginal
2016-06-06 20:12:151055browse

PHP实现一个文件上传的功能还是比较容易的,这里简单记录一下自己使用方法。 这里是一次接收多个文件上传的脚本upload.php,如下: ?php// 实现多个文件上传并保存的后端?//设置编码为UTF-8,以避免中文乱码header('Content-Type:text/html;charset=utf-8');

PHP实现一个文件上传的功能还是比较容易的,这里简单记录一下自己使用方法。
这里是一次接收多个文件上传的脚本upload.php,如下:

<?php // 实现多个文件上传并保存的后端
?
//设置编码为UTF-8,以避免中文乱码
header('Content-Type:text/html;charset=utf-8');
?
//获取多个文件的信息,注意:这里的键名不包含[]
$fileArray = $_FILES['upload_file'];
?
$upload_dir = 'img/'; //保存上传文件的目录
?
foreach ( $fileArray['error'] as $key => $error ) {
if ( $error == UPLOAD_ERR_OK ) { //PHP常量UPLOAD_ERR_OK值为0,表示文件上传成功
$temp_name = $fileArray['tmp_name'][$key];
$file_name = $fileArray['name'][$key];
move_uploaded_file($temp_name, $upload_dir.$file_name);
echo '上传[文件'.$key.':'.$file_name.']成功!';
}else {
echo '上传[文件'.$key.':'.$file_name.']失败!';
}
}
?>


关于上传文件的大小限制,对于我目前的nginx + php-fpm,有nginx和php的两层限制。
nignx的限制,目前默认是1MB的请求body,可以在配置文件/etc/nginx/nginx.conf中来调整:

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
?
    client_max_body_size 10M;   #设置最大的body size
    ...
}

如果超过client_max_body_size的限制,nginx会返回413响应码表示“Request Entity Too Large ”。

PHP对post请求内容的大小限制:
在/etc/php.ini文件中,有如下内容:

?
; 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.
; http://www.php.net/manual/en/info.configuration.php#ini.max-input-time
max_input_time = 60
?
; Maximum size of POST data that PHP will accept.
; http://www.php.net/manual/en/ini.core.php#ini.post-max-size
post_max_size = 10M
?
; Whether to allow HTTP file uploads.
; http://www.php.net/manual/en/ini.core.php#ini.file-uploads
file_uploads = On
?
; Maximum allowed size for uploaded files.
; http://www.php.net/manual/en/ini.core.php#ini.upload-max-filesize
upload_max_filesize = 10M

参考资料:

http://www.365mini.com/page/php-upload-file.htm

http://www.php.net/manual/zh/features.file-upload.php

http://forum.nginx.org/read.php?2,139769,139769#msg-139769

Original article: PHP实现文件上传功能

©2014 笑遍世界. All Rights Reserved.

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:MySQL字段数据类型Next article:WEB服务端权限控制