在网络上,用户可以上传自己的文件。实现这种功能的方法很多,用户把一个文件上传到服务器,需要在客户端和服务器端建立一个通道来传递文件的字节流,并在服务器进行上传操作。下面介绍一种使用代码最少,并且容易理解的方法。
11.3.1 全局变量$_FILES
通过使用PHP的全局变量$_FILES,用户可以从客户计算机向远程服务器上传文件。全局变量$_FILES是一个二维数组,用于接收上传文件的信息,它会保存表单中type值为file的提交信息,有5个主要列,具体含义如下:
(1)$_FILES[“file”][“name”]:存放上传文件的名称。
(2)$_FILES[“file”][“type”]:存放上传文件的类型。
(3)$_FILES[“file”][“size”]:存放上传文件的大小,以字节为单位。
(4)$_FILES[“file”][“tmp_name”]:存放存储在服务器的文件的临时全路径。
(5)$_FILES[“file”][“error”]:存放文件上传导致的错误代码。
在$_FILES[“file”][“tmp_name”]中,/tmp目录是默认的上传临时文件的存放地点,此时用户必须将文件从临时目录中删除或移到其他位置,如果没有,则上传的文件会自动被删除。可见,无论上传是否成功,程序最后都会自动删除临时目录中的文件。所以在删除前,需要将上传的文件复制到其他位置,这样才算真正完成了上传文件的过程。
另外,$_FILES[“file”][“error”]中返回的错误代码的常量对应的数值的含义如下:
(1)UPLOAD_ERR_OK=0:表示没有发生任何错误。
(2)UPLOAD_ERR_INI_SIZE=1:表示上传文件的大小超过了约定值。
(3)UPLOAD_ERR_FORM_SIZE =2:表示上传文件的大小超过了HTML表单隐藏域属性的MAX_FILE_SIZE元素所规定的最大值。
(4)UPLOAD_ERR_PARTIAL =3:表示文件只被部分上传。
(5)UPLOAD_ERR_NO_FILE =4:表示没有上传任何文件。