学习PHP文件上传

我们在学习PHP文件上传之前,先了解三个步骤:

第一:学习如何控制上传文件(配置php.ini文件);

第二:学习对上传文件的判断(判断上传文件的格式和大小);

第三:学习文件上传操作的方法.

(一)了解php.ini文件中文件上传的配置信息

PHP中通过php.ini文件对上传文件进行控制,包括:是否支持上传,上传文件的临时目录,上传文件的大小,指令执行的时间,指令分配的内存空间.

##############

##File Uploads##

##############

#Whether to allow HTTP file uploads.

file_uploads = On

[注释]file_uploads:如果值是on.说明服务器支持文件上传;如果为off,则不支持.一般默认是支持的,这个不用修改.

#Temporary directory for HTTP uploaded files (will use system default if not specified).

upload_tmp_dir = "H:\XAMPP\xampp\tmp"

[注释]upload_tmp_dir:上传文件临时目录.在文件被成功上传之前,文件首先被存放到服务器端的临时目录中.多数使用系统默认目录,但是也可以自行设置.

#Maximum allowed size for uploaded files

upload_max_filesize = 128M

#[注释]upload_max_filesize:服务器允许上传文件的最大值,以M为单位.系统默认为128M,如果网站上需要限制上传的数据,那么要修改这个值.

上述是php中关于File_Uploads项中与上传相关选项参数设置说明,除了File_Uploads项的内容外,在php.ini中还有其他几个选项会影响文件的上传.

#################

##Resource Limits##

#################

#Maximum execution time of each script ,in seconds

max_execution_time = 60

#[注释]PHP中一个指定所要执行的最大时间,单位为秒.该选项在上传超大文件时必须要修改,否则即使上传文件在服务器允许范围内,但是超过了指令所要执行的最大时间,仍然无法实现上传.

#Maximum amount of memory a script may consume (128MB)

memory_limit = 128M

#[注释]memory_limit: PHP中一个指令所要分配的内存空间,单位是M.它的大小同样会影响超大文件的上传.

第二:如何对上传文件进行解析(判断上传文件的格式和大小);

对文件上传进行判断应用的是全局变量$_FILES,它是一个数组,它包含所有上传的文件信息.

1)$_FILES[filename][name]  存储上传文件的文件名.

2)$_FILES[filename][size] 存储文件的大小.单位为字节.

3)$_FILES[filename][tmp_name] 存储文件在临时目录中使用的文件名.

4)$_FILES[filename][type] 存储上传文件的MIME类型,MIME类型规定各种文件格式的类型.

5)$_FILES[filename][error] 存储于文件上传相关的错误代码,其返回值有5中. 0:表示没有任何错误,文件上传成功....

第三:如何进行文件上传操作

PHP中应用move_uploaded_file()函数实现文件上传.但是,在执行文件上传之前,为了防止潜在的攻击对原本不能通过脚本交互的文件进行非发管理,可以先应用is_uploaded_file()函数进行判断指定文件是否是通过HTTP POST上传的,如果是则返回值true,可以继续执行文件上传操作,否则将不能够继续执行.

1: is_uploaded_file()函数用于判断指定的文件是否是通过HTTP POST上传的.

语法: bool is_uploaded_file(string filename)

参数filename必须指定类似于$_FILES['filename']['tmp_name']的变量,不可以使用从客户端上传的文件名$_FILES['filename']['name'].

[注]通过is_uploaded_file()函数对上传文件进行判断,可以确保恶意的用户无法欺骗脚本去访问不能访问的文件.

2:move_loaded_file()函数将指定的文件上传服务器中指定的位置.如果成功返回true,否则返回false.

语法: bool_uploaded_file(string filename,string destination)

参数filename指定上传文件的临时文件名,即$_FILES[tmp_name];参数destination指文件上传后保存的新路径和名称.




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值