php - 服务器上的文件位置而不是 $_FILES["file"]["name"] (POST)

php - File location on server instead of $_FILES["file"]["name"] (POST)

我有一个功能,可以将从某个页面发布的图像上传到 amazon s3。

$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/pjpeg") || ($_FILES["file"]["type"] == "image/x-png") || ($_FILES["file"]["type"] == "image/png"))
    //&& ($_FILES["upload"]["size"] < 20000)
    && in_array($extension, $allowedExts)) {
    if ($_FILES["file"]["error"] > 0) {
        echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
    } else {

      //uploading here

        } else {
            echo 'Image not uploaded! :(';
        }
    }
} else {
    echo "Invalid file";
}

它工作正常!但现在我在 /tmp/ 文件夹的服务器上有一张图片,我需要上传这张图片,我该怎么做?

谢谢!

检查move_uploaded_file函数。并 var_dump($_FILES['file']); 查看您上传的文件有哪些信息。

你上传的文件在这里,上传后$_FILES['file']['tmp_name'];

使用move_uploaded_file函数

$uploads_dir = 'path/to/some/dir';
$tmp_name = $_FILES["file"]["tmp_name"];
$name = $_FILES["file"]["name"];
move_uploaded_file($tmp_name, "$uploads_dir/$name");

此外,一个好习惯是将 $_FILES["file"]["type"] 放入一个变量中,并在 if 检查中使用该变量,而不是使用 $_FILES 数组每次:

$_type = $_FILES["file"]["type"];
if ((($_type == "image/gif") || ($_type == "image/jpeg") || ($_type == "image/jpg") || ($_type == "image/pjpeg") || ($_type == "image/x-png") || ($_type == "image/png"))
&& in_array($extension, $allowedExts)) {