PHP文件上传:$_FILES数组及$_FILES[‘userfile’][‘error’]中返回的错误代码
在PHP脚本中,上传文件需要处理的数据保存在超级全局数组$_FILES中。
保存$_FILES数组中的元素时,将同时保存HTML表单的<file>标记名称。表单元素名称是userfile,因此该数组将具有如下所示的内容:
- 存储在$_FILES[‘userfile’][‘tmp_name’]变量中的值就是文件在Web服务器中临时存储的位置。
- 存储在$_FILES[‘userfile’][‘name’]变量中的值就是用户系统中的文件名称。
- 存储在$_FILES[‘userfile’][‘size’]变量中的值就是文件的字节大小。
- 存储在$_FILES[‘userfile’][‘type’]变量中的值就是文件的MIME类型,例如:text/plain或image/gif。
- 存储在$_FILES[‘userfile’][‘error’]变量中的值将是任何与文件上传相关的错误代码。这是在PHP 4.2.0中增加的新特性。
如果已经知道上传文件的位置及其名称,就可以将其复制到其他有用的地方。在脚本执行结束前,这个临时文件将被删除。因此,如果要保留上传文件,必须将其重命名或移动。
$_FILES[‘userfile’][‘error’]中返回的错误代码。同样,每一个错误代码都有一个相关的错误常量。这些可能的常量和错误代码如下所示:
- UPLOAD_ERROR_OK,值为0,表示没有发生任何错误。
- UPLOAD_ERR_INI_SIZE,值为1,表示上传文件的大小超出了约定值。文件大小的最大值是在PHP配置文件中指定的,该指令是upload_max_filesize。
- UPLOAD_ERR_FORM_SIZE,值为2,表示上传文件大小超出了HTML表单的MAX_FILE_SIZE元素所指定的最大值。
- UPLOAD_ERR_PARTIAL,值为3,表示文件只被部分上传。
- UPLOAD_ERR_NO_FILE,值为4,表示没有上传任何文件。
- UPLOAD_NO_TMP_DIR,值为6,表示在php.ini文件中没有指定临时目录(在PHP 5.0.3版本引入)。
- UPLOAD_ERR_CANT_WRITE,值为7,表示将文件写入磁盘失败(在PHP 5.1.0版本引入)。