PHP用全局变量数组$_FILES来记录文件上传的相关信息。
#php.ini
file_uploads=on
#是否允许通过http方式上传文件,设置为off则不允许
max_execution_time=0
#允许脚本最大执行时间,超过这个时间就会报错
#设置为0则不限制时间
memory_limit=128M
#设置脚本可以分配的最大内存量,防止失控脚本占用过多内存
#此指令只有在编译时设置了--enable-memory-limit标志的情况下才生效
upload_max_filesize=200M
#允许上传文件的最大大小,此指令必须小于post_max_size
upload_tmp_dir
#上传文件临时存放目录
post_max_size=300M
#允许post方式可以接受最大大小
#最好这个值大于upload_max_filesize
$_FILES['myFile']['name']
客户端上次文件的原始名称。
$_FILES['myFile']['type']
文件的 MIME 类型,需要浏览器提供该信息的支持,例如"image/gif"。
$_FILES['myFile']['size']
已上传文件的大小,单位为字节。
$_FILES['myFile']['tmp_name']
文件被上传后在服务端储存的临时文件名,一般是系统默认。可以在php.ini的upload_tmp_dir 指定,但用 putenv() 函数设置是不起作用的。
$_FILES['myFile']['error']
该文件上传相关的状态码。
['error'] 是在 PHP 4.2.0 版本中增加的。
下面是它的说明:(它们在PHP3.0以后成了常量)
UPLOAD_ERR_OK
值:0
没有错误发生,文件上传成功。
UPLOAD_ERR_INI_SIZE
值:1
上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。
UPLOAD_ERR_FORM_SIZE
值:2
上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。
UPLOAD_ERR_PARTIAL
值:3
文件只有部分被上传。
UPLOAD_ERR_NO_FILE
值:4
没有文件被上传。
值:5
上传文件大小为0.
文件被上传结束后,默认地被存储在了临时目录中,这时您必须将它从临时目录中删除或移动到其它地方,如果没有,则会被删除。
不管是否上传成功,脚本执行完后临时目录里的文件肯定会被删除。
别以为这样设置好了就可以正常传大文件了,继续往下看:
#NGINX
client_max_body_size 200M;
# 如果需要设置服务器所有站点都支持大文件
# 直接修改 nginx.conf, 添加到 http {} 里面
#
# 如果针对某个站点设置支持大文件
# 修改vhost下站点相对应的 conf , 添加到 server {} 里面, 不要放在 location 里
#APACHE
LimitRequestBody 209715200
#200M=20*1024*1024
记得重启(包括PHP)。
让你的PHP,APACHE,NGINX支持大文件上传
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@