2012-11-23 108 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