2012-11-23 141 views
1

我想在目錄中添加圖片。該目錄是動態生成的。但上傳目錄和圖像中的圖像時出現錯誤,由於此錯誤而無法上傳,錯誤如下:在php上傳圖片

警告:mkdir():文件存在於C:\ wamp \ www \ test \ index中.PHP第21行

我的代碼是在這裏:

<body> 
      <form method="post" action="" enctype="multipart/form-data"> 
      <input type="file" name="filename" id="filename" /> 
      <input type="submit" name="pic" /> 
      </form> 

    </body> 
    </html> 

    <?php 
     if(isset($_POST['pic'])){ 
      $comimages = $_FILES['filename']['tmp_name']; 
      $targetpath = mkdir("pageimage/pageid"); 
       $compath = $targetpath."/".$_FILES['filename']['name']; 

       $comFileType=$_FILES['filename']['type']; 
       $comFileSize=$_FILES['filename']['size']; 
       $comFileSize=$comFileSize/1024; 

       if($comFileSize<1000) 
       { 
        $arrFileType=array("image/jpeg","image/png","image/gif","image/bmp"); 

        if(in_array($comFileType,$arrFileType)) 

        { 

         move_uploaded_file($comimages,$compath); 
        } 
        else 
        { 
         echo("invalid file format");  
        } 
       } 
       else 
       { 
        echo("File Size Error");  
       } 
     } 
    ?> 
+0

嘗試使用is_dir(「pageimage /的pageid」)創建目錄之前 –

回答

4

的線索是在錯誤。您正在嘗試創建的目錄$targetpath = mkdir("pageimage/pageid");已經存在...因此您無法再次創建它!

我會建議做一個快速的文件存在檢查,然後再嘗試。存在對一個函數:file_exists()

另外,mkdir()返回一個布爾(成功或失敗);不是文件目錄,因此您將無法像預期的那樣使用您的$targetpath變量。

試試這個...

$targetpath = "pageimage/pageid"; 
if (!file_exists($targetpath)) { 
    mkdir($targetpath); 
} 
... 
+0

請更正此代碼或寫下你說的話.. –

+1

我不是在這裏爲你寫代碼,你應該能夠弄清楚如何實現我給自己的例子。 :) – Maccath

+0

file_exists不說有關這個目標是否真的是一個目錄,它可能也是一個文件。 – Rufinus

0

更換

$targetpath = mkdir("pageimage/pageid"); 

有了:

$targetpath = "pageimage/pageid"; 
if(!is_dir($targetpath)){ 
mkdir($targetpath); 
} 

這樣,你正在創建僅在它不存在的目錄。由於目錄已經存在而導致的錯誤是正常的。

0

更換

$targetpath = mkdir("pageimage/pageid"); 

隨着..

$targetpath = if(is_dir("pageimage/pageid")) ? "pageimage/pageid" : mkdir("pageimage/pageid"); 

您應該檢查該文件夾是否創建它之前就存在。

0

第一個問題:第21行在哪裏? 無論如何,您必須在創建它之前測試目錄是否存在。顯然,它似乎已經存在於您的案例中(文件夾在技術上被視爲文件,例如參見is_dir())。使用file_exists()。 另外注意的是,如果你創建一個結構(一個文件夾,裏面的文件夾),您必須使用$recursive參數,請參見PHP文檔:http://php.net/manual/fr/function.mkdir.php