2012-01-13 14 views
-1

ここで私はPHPで画像をアップロードする際に問題があります。画像のアップロードは、PHPでアップロードする前の一時ファイルを取ります

問題は、初めて画像ファイルをアップロードするときにうまく機能することです。 しかし、ページをリフレッシュせずにファイルを2回アップロードしようとすると、最初のイメージ名がアップロードされます。

どのような問題があり、どのように解決できますか?

$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はステータスを取得するために使用される変数です。

+0

上記のコードの問題。より関連性の高いコードが役立つかもしれません。 – Rannnn

答えて

2

あなたはこの機能を呼び出すために何らかのAJAXを使用しているようですね。

あなたは...多分このような何かが役立つだろう、この関数の最後に$ _FILES配列をリセットする方法を見つける必要があるかもしれません:

$_FILES = array(); 

そうでない場合は、(見かけ上の)ページが存在しないため、私は、$ _FILES変数が自然にリセットされる機会がないと思っています(ここでAJAXを使用していなかった場合に起こります)。

+0

私はそれを試してみました。しかし解決策が見つかりました。 –

関連する問題