图像上传需要在PHP中上传以前的临时文件


Image upload takes previous temp file to upload in PHP

这里我遇到了用PHP上传图像的问题。

问题是,当我第一次上传图像文件时,它运行良好。但当我试图在没有页面刷新的情况下第二次上传文件时,它会取第一个图像名称并上传

问题是什么?如何解决?

$name = $_FILES['ImageFile']['name'];
$size = $_FILES['ImageFile']['size'];
$tmp = $_FILES['ImageFile']['tmp_name'];
$path = "public/www/uploads/";
        $valid_formats = array("jpg", "png", "gif", "bmp");
        $response = '';
        if(strlen($name)) {
            list($txt, $ext) = explode(".", $name);
            if(in_array($ext,$valid_formats)) {
                if($size<(1024*1024)) {
                    $actual_image_name = time().substr(str_replace(" ", "_", $txt), 5).".".$ext;
                    if(move_uploaded_file($tmp, $path.$actual_image_name)) {
                                                $response = "<img src='public/www/uploads/".$actual_image_name."?parm=".time()."' class='preview'>";
                    } else { 
                        $response = "failed";
                    }
                } else { 
                    $response = "Image file size max 1 MB";                 
                }
            } else {
                $response = "Invalid file format..";    
            }
        } else {
            $response = "Please select image..!";
        }

这里,$response是一个用于获取状态的变量。

听起来像是在使用某种AJAX来调用这个函数。

您可能需要找到一种方法来重置此函数末尾的$_FILES数组。。。也许这样的东西会有所帮助:

$_FILES = array();

否则,因为文件上传后没有(明显的)页面刷新(正如您所提到的),我认为$_FILES变量没有机会被自然重置(如果您在这里没有使用AJAX就会发生这种情况)