服务器上的文件位置,而不是 $_FILES[“文件”][“名称”] (POST)


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函数

$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)) {

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

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