繁体   English   中英

在 PHP 中上传不会创建临时文件

[英]Upload in PHP doesn't create temp file

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

我试过搜索错误并找到了这个答案 在多次检查这些步骤后,我仍然发现自己没有上传文件......

表格 :

<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 作为 upload_tmp_dir 编辑了正确的 php.ini 文件并将上传限制设置为 100M),并且 /tmp 上有 777 chmod。

我错过了什么?

我已经复制并以某种方式测试了您的代码。 您不需要执行 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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM