用php上传图像

用php上传图像,php,html,image,Php,Html,Image,我想在目录中添加图像。目录会动态生成。但在目录中上载图像时出错,因此无法上载图像。错误如下: 警告:mkdir():文件位于第21行的C:\wamp\www\test\index.php中 我的代码在这里: <body> <form method="post" action="" enctype="multipart/form-data"> <input type="file" name="filename" id=

我想在目录中添加图像。目录会动态生成。但在目录中上载图像时出错,因此无法上载图像。错误如下:

警告: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");    
                }
        }
    ?>

线索在错误中。您试图使用
$targetpath=mkdir(“pageimage/pageid”)创建的目录已存在。。。所以你不能再做了

我建议在做之前做一个快速的文件检查。这里有一个函数:

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

试试这个

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

线索在错误中。您试图使用
$targetpath=mkdir(“pageimage/pageid”)创建的目录已存在。。。所以你不能再做了

我建议在做之前做一个快速的文件检查。这里有一个函数:

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

试试这个

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

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

这样,只有当目录不存在时,才能创建该目录。由于目录已经存在,因此出现错误是正常的。

替换

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


这样,只有当目录不存在时,才能创建该目录。由于目录已经存在,因此出现错误是正常的。

在创建目录检查其存在之前,不能创建两次目录

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

见:


在创建目录之前,不能创建两次目录,请检查目录是否存在

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

见:

更换

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

$targetpath = if(is_dir("pageimage/pageid")) ? "pageimage/pageid" : mkdir("pageimage/pageid");
在创建文件夹之前,应检查文件夹是否存在。

替换

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

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

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

第一个问题:第21行在哪里? 无论如何,在创建目录之前,您必须测试它是否存在。显然,它似乎已经存在于您的案例中(文件夹在技术上被认为是文件,请参见示例
is_dir()
)。使用
文件\u exists()

还要注意,如果创建一个结构(一个文件夹和其中的一个文件夹),则必须使用
$recursive
参数,请参见PHP文档:

第一个问题:第21行在哪里? 无论如何,在创建目录之前,您必须测试它是否存在。显然,它似乎已经存在于您的案例中(文件夹在技术上被认为是文件,请参见示例
is_dir()
)。使用
文件\u exists()

还要注意,如果您创建一个结构(一个文件夹和其中的一个文件夹),您必须使用
$recursive
参数,请参阅PHP文档:

在创建目录之前尝试使用is_目录(“pageimage/pageid”),在创建目录之前尝试使用is_目录(“pageimage/pageid”)。我不是来为您编写代码的,您应该能够了解如何实现我给您自己的示例。:)file_exists没有说明这个目标是否真的是一个目录,它也可能是一个文件。我认为这个文件可能存在并且是一个文件,而不是一个目录,或者不可写,这是需要进行的额外检查,超出了原始问题的范围。如果您执行
is_dir()
,它返回false,然后您尝试
mkdir()
,它将失败,因为已经存在一个同名的文件/文件夹。我不是来为您编写代码的,您应该能够弄清楚如何实现我给自己的示例。:)file_exists没有说明这个目标是否真的是一个目录,它也可能是一个文件。我认为这个文件可能存在并且是一个文件,而不是一个目录,或者不可写,这是需要进行的额外检查,超出了原始问题的范围。如果执行
is_dir()
,它返回false,然后尝试
mkdir()
,它将失败,因为已经存在同名的文件/文件夹。