我是php的新手。我正在浏览文件上传的例子。我在getimagesize()
函数$_FILES['file']['temp_name']
内使用。当我回显$ _FILES ['file'] ['temp_name ']它显示以下输出:
C:\ XAMPP \ TMP \ phpDE4B.tmp
我的问题是:
1.为什么在getimagesize()
函数中使用tmp_name而不是原始名称。
2.为什么创建这个tmp_name?
3.如何生成?
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
if($check !== false) {
echo "File is an image - " . $check["mime"] . ".";
$uploadOk = 1;
} else {
echo "File is not an image.";
$uploadOk = 0;
}
}
答案 0 :(得分:3)
临时文件是作为文件上载过程的一部分生成的,直接在PHP和Web服务器之间处理。
使用临时文件,以便userland代码可以将文件移动到服务器上的最终目标文件夹 - 最终目标文件夹不是可以在http请求中传递或由Web服务器处理的信息,因为这完全取决于您的申请。如果文件未移动到其最终目标文件夹,则临时文件将在请求结束时自动删除
在这种情况下,代码是验证过程的一部分,以确保文件在 移动到其最终目标文件夹之前声称为 (假设这是一个有效的文件。)
答案 1 :(得分:1)
当某个文件上传到服务器时,它会被放在临时目录中以便使用它。为了不在名称中发生冲突,分配临时名称。
1)您需要将文件路径传递给getimagesize()
,因为您不仅可以使用已保存的文件。
2)创建Tmp_name是为了避免冲突,但如果需要,可以获得原始名称。
3)临时目录中只有一些随机生成的名称。