用PHP上传不会创建临时文件

时间:2020-09-05 14:53:57

标签: php file-upload

我正在尝试通过上传表单将图像发送到php脚本,但该文件未显示在我的临时文件夹中。

我尝试搜索错误,并遇到this answer。几次检查完每个步骤后,我仍然发现自己没有上传的文件...

表格:

<form id="addImageForm" action="functions/add_image.php" method="POST" enctype="multipart/form-data">
  <label for="articleImage">Select a file:</label>
  <input type="file" name="articleImage" id="articleImage">
  <input type="submit" class="btn btn-success" value="Submit">
</form>

add_image.php脚本:

<?php

/* Checking request parameters */
if(!isset($_FILES['articleImage']) || empty($_FILES['articleImage'])) {
    echo "Error : the file is missing";
    die();
}

/* Checking upload errors */
if($_FILES['articleImage']['error'] != UPLOAD_ERR_OK) {
    echo "Error : ".$_FILES['articleImage']['error'];
    die();
}

/* Checking file size */
if($_FILES['articleImage']['size'] == 0) {
    echo "Error : the file is empty";
    die();
}

/* Checking file has been uploaded to tmp */
if(is_uploaded_file($_FILES['articleImage']['tmp_name'])) {
    echo "Error : the file didn't upload";
    die();
}

/* Checking file doesn't already exist */
$imagePath = "img/articles/".$_FILES['articleImage']['name'];
if(file_exists($imagePath)) {
    echo "Error : the filename is already taken";
    die();
}

/* Writing image */
if(!move_uploaded_file($_FILES['articleImage']['tmp_name'], $imagePath)) {
    echo "Error : the file coundn't be written";
    die();
}

echo 'Success';
die();

?>

请求已正确发送:


-----------------------------45933353531894573431775954628
Content-Disposition: form-data; name="articleImage"; filename="my_file.png"
Content-Type: image/png

[image content]

-----------------------------45933353531894573431775954628--

但是我仍然收到“文件未上传”错误...

正如我前面提到的,我确实检查了php conf(用/ tmp将正确的php.ini文件编辑为upload_tmp_dir并将上传限制设置为100M),并且/ tmp上具有777 chmod。

我想念什么?

1 个答案:

答案 0 :(得分:0)

我已经复制并以某种方式测试了您的代码。您不需要执行is_uploaded_file调用,因为这些检查是在move_uploaded_file函数(https://www.php.net/manual/en/function.is-uploaded-file.php#113766)中进行的。还要检查是否存在用于存储图像的目录。

<?php

/* Directory where uploaded images will be placed */
$imageDir = 'img/articles';

/* Checking request parameters */
if (!isset($_FILES['articleImage']) || empty($_FILES['articleImage'])) {
    echo "Error : the file is missing";
    die();
}

/* Checking upload errors */
if ($_FILES['articleImage']['error'] != UPLOAD_ERR_OK) {
    echo "Error : " . $_FILES['articleImage']['error'];
    die();
}

/* Checking file size */
if ($_FILES['articleImage']['size'] == 0) {
    echo "Error : the file is empty";
    die();
}
/* Checking if directory exists */
if (!is_dir($imageDir)) {
    echo 'Image directory does not exist';
    die();
}

/* Checking file doesn't already exist */
$imagePath = $imageDir . $_FILES['articleImage']['name'];
if (file_exists($imagePath)) {
    echo "Error : the filename is already taken";
    die();
}

/* Writing image */
if (!move_uploaded_file($_FILES['articleImage']['tmp_name'], $imagePath)) {
    echo "Error : the file coundn't be written";
    die();
}

echo 'Success';
die();
相关问题