1

我想在目录中添加图像。该目录是动态生成的。但是在目录中上传图片时出现错误,由于此错误,图片无法上传,错误如下:

警告:mkdir(): 文件存在于第 21 行的 C:\wamp\www\test\index.php

我的代码在这里:

 <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");    
                }
        }
    ?>
4

5 回答 5

4

线索在错误中。您尝试创建的目录$targetpath = mkdir("pageimage/pageid");已经存在......所以您无法再次创建它!

我建议在尝试制作之前快速检查文件是否存在。有一个功能:file_exists()

此外,mkdir()返回一个布尔值(成功或失败);不是文件目录,因此您将无法按$targetpath预期使用变量。

试试这个...

$targetpath = "pageimage/pageid";
if (!file_exists($targetpath)) {
    mkdir($targetpath);
}
...
于 2012-11-23T10:40:27.497 回答
0

第一个问题:第 21 行在哪里?无论如何,您必须在创建目录之前测试目录是否存在。显然,它似乎已经存在于您的案例中(文件夹在技术上被视为文件,参见示例is_dir())。使用file_exists(). 另请注意,如果您创建结构(文件夹和内部文件夹),则必须使用$recursive参数,请参阅 PHP 文档: http: //php.net/manual/fr/function.mkdir.php

于 2012-11-23T10:44:38.950 回答
0

更换

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

和:

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

这样,您仅在目录不存在时才创建目录。由于目录已经存在,您得到的错误是正常的。

于 2012-11-23T10:42:20.487 回答
0

您不能两次创建目录,在创建目录之前检查它的存在。

您可以使用is_dir()is_writeable()确保您可以写入此目录。

见: http ://uk.php.net/manual/en/function.is-writable.php

http://uk.php.net/is_dir

于 2012-11-23T10:42:20.790 回答
0

代替

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

和..

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

您应该在创建文件夹之前检查该文件夹是否存在。

于 2012-11-23T10:42:24.517 回答