这是我正在阅读的PHP + MySQL书籍的代码,我无法理解这段代码。此代码用于检查上载到数据库中的文件。 (请原谅任何拼写错误,如果有的话,我正在输入)
Q1:它如何知道要回应哪种情况?在整个代码中,没有提到每种情况。
Q2:为什么他们会跳过案例5?!或者使用哪个数字无关紧要(所以我可以有案例1,案例18,案例2?)
对于这个陈述,你能说if($ _ FILES ['userfile'] ['error'] = 1)而不是> 0?它们是一样的吗?
if($_FILES['userfile']['error']>0)
{
echo 'Problem: ';
switch($_FILES['userfile']['error'])
{
case 1: echo 'File exceeded upload_max_filesize';
break;
case 2: echo 'File exceeded max_file_size';
break;
case 3: echo 'File only partially uploaded';
break;
case 4: echo 'No file uploaded';
break;
case 6: echo 'Cannot upload file: no temp directory specified';
break;
case 7: echo 'Upload failed: Cannot write to disk';
break;
}
exit;
}
答案 0 :(得分:2)
UPLOAD_ERR_OK值:0 ;没有 错误,文件上传成功。
UPLOAD_ERR_INI_SIZE值:1 ;该 上传的文件超过了 upload_max_filesize指令 php.ini中。
UPLOAD_ERR_FORM_SIZE值:2 ;该 上传的文件超过了 那是MAX_FILE_SIZE指令 在HTML表单中指定。
UPLOAD_ERR_PARTIAL价值:3 ;该 上传的文件只是部分 上传。
UPLOAD_ERR_NO_FILE价值:4 ;没有文件 已上传。
UPLOAD_ERR_NO_TMP_DIR值:6 ; 缺少临时文件夹。介绍 在PHP 4.3.10和PHP 5.0.3中。
UPLOAD_ERR_CANT_WRITE价值:7 ;失败 将文件写入磁盘。介绍 PHP 5.1.0。
UPLOAD_ERR_EXTENSION价值:8 ;一个PHP 扩展程序停止了文件上传。 PHP 没有提供确定的方法 哪个扩展名导致文件上传 停止;检查已加载的列表 使用phpinfo()扩展可能会有所帮助。 在PHP 5.2.0中引入。
它的要点是,当您处理上传的文件时,检查错误值($_FILES['userfile']['error']
)以查看文件的状态。 switch语句通过检查可能存在的错误代码来分解它。这些基本上都是“硬连线”。
答案 1 :(得分:2)
文件上传的所有错误情况都是在PHP中预定义的。你可以在这里看到它们的含义: http://php.net/manual/en/features.file-upload.errors.php
答案 2 :(得分:0)
$ _ FILES ['userfile'] ['error']只是一个数字。 switch语句转到与该数字匹配的case
。所以它就像if(...){goto ...;}
语句的大列表。我猜案例5要么永远不会发生,要么无所谓。