background image

1.

<input

 

type

=

"file"

 

name

=

"file"

 

/>

 

那么使用$_FILES['file']['name']来获得客户端上传文件名称,不包含路径。使用
$_FILES['file']['tmp_name']来获得服务端保存上传文件的临时文件路径

存放上传文件的文件夹

PHP 不会直接将上传文件放到网站根目录中,而是保存为一个临时文件,名称就是
$_FILES['file']['tmp_name']的值,开发者必须把这个临时文件复制到存放的网站文件夹中。

$_FILES['file']['tmp_name']的值是由 PHP 设置的,与文件原始名称不一样,开发者必须使
用$_FILES['file']['name']来取得上传文件的原始名称。

上传文件时的错误信息

$_FILES['file']['error']变量用来保存上传文件时的错误信息,它的值如下:

错误信息

数值

 

说 明

UPLOAD_ERR_OK

0

没有错误

UPLOAD_ERR_INI_SI
ZE

1

上传文件的大小超过 php.ini 的设置

UPLOAD_ERR_FROM
_SIZE

2

上传文件的大小超过 HTML 表单中 MAX_FILE_SIZE

的值

UPLOAD_ERR_PARTI
AL

3

只上传部分的文件

UPLOAD_ERR_NO_FI
LE

4

没有文件上传

文件上传漏洞

如果提供给网站访问者上传图片的功能,那必须小心访问者上传的实际可能不是图片,
而是可以指定的 PHP 程序。如果存放图片的目录是一个开放的文件夹,则入侵者就可以
远程执行上传的 PHP 文件来进行攻击。

下面是一个简单的文件上传例子:

1.

<?php

 

2. // 设置上传文件的目录

 

3. $

uploaddir

 = 

"D:/www/images/"

4. // 检查 file 是否存在

 

5. if (isset($_FILES['file1'])) 
6. { 
7. // 要放在网站目录中的完整路径,包含文件名

 

8. $

uploadfile

 = $uploaddir . $_FILES['file1']['name']; 

9. // 将服务器存放的路径,移动到真实文件名

 

10. move_uploaded_file($_FILES['file1']['tmp_name'], $uploadfile); 
11. }