问题
希望处理用户上传的一个文件。
解决方案
使用$FILES数组获得上传文件的有关信息。
// 检查请求方法是否为GET
if($_SERVER['REQUEST_METHOD'] == 'GET'){
}else{
// 如果请求方法不是GET(即表单提交后),则处理文件上传
// 检查是否有名为'document'的文件上传,并且上传过程中没有错误
if(isset($_FILES['document']) && ($_FILES['document']['error'] == UPLOAD_ERR_OK)){
// 定义新文件的路径,这里使用/tmp/目录,并保留原文件名
$newPath = '/tmp/' . basename($_FILES['document']['name']);
// 使用move_uploaded_file函数将文件从临时目录移动到指定目录
// $_FILES['document']['tmp_name']是上传文件在服务器上的临时路径
if(move_uploaded_file($_FILES['document']['tmp_name'], $newPath)){
// 如果文件移动成功,打印文件保存的路径
print "File saved in $newPath";
}else{
// 如果文件移动失败,打印错误信息
print "Couldn't move file to $newPath";
}
}else{
// 如果没有上传有效文件(例如,没有选择文件或上传过程中出现错误)
print "No valid file uploaded.";
}
}
为每个文件创建的这样一个数组都包含5个元素:
name(名)
** 上传文件的名。这由浏览器提供,所以可以是一个完整的路径名,也可能只是一个文件名。**
type(类型)
** 文件的MIME类型,由浏览器提供**
size(大小)
** 文件大小(字节数),由服务器计算。**
tmp_name(临时名)
** 文件临时存储在服务器的哪个位置。**
error(错误)
** 这个错误码描述了文件上传出现的问题(如果有)。**
error元素可以取以下值:
UPLOAD_ERR_OK(0):上传成功(无错误)。
UPLOAD_ERR_INI_SIZE(1):上传文件的大小大于upload_max_flesize配置指令的值。
UPLOAD_ERR_FORM_SIZE(2):上传文件的大小大于表单MAX_FILE_SIZE元素的值。
UPLOAD_ERR_PARTIAL(3):只上传了文件的一部分。
UPLOAD_ERR_NO_FILE(4):没有要上传的文件。
UPLOAD_ERR_NO_TMP_DIR (6):由于没有临时目录来存储文件,所以上传失败。
UPLOAD_ERR_CANT_WRITE(7):PHP不能向磁盘写文件。
UPLOAD_ERR_EXTENSION(8):上传被一个PHP扩展中止。