我想在目录中添加图片。该目录动态生成。但是在目录中上传图像时出错,由于此错误导致图片无法上传,错误如下:
警告: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");
}
}
?>
答案 0 :(得分:4)
线索出现错误。您尝试使用$targetpath = mkdir("pageimage/pageid");
创建的目录已存在...因此您无法再次创建该目录!
我建议在尝试制作之前进行快速文件存在检查。有一个功能: file_exists()
此外,mkdir()
返回布尔值(成功或失败);不是文件目录,因此您将无法按预期使用$targetpath
变量。
试试这个......
$targetpath = "pageimage/pageid";
if (!file_exists($targetpath)) {
mkdir($targetpath);
}
...
答案 1 :(得分:0)
替换
$targetpath = mkdir("pageimage/pageid");
使用:
$targetpath = "pageimage/pageid";
if(!is_dir($targetpath)){
mkdir($targetpath);
}
这样,只有在目录不存在时才创建目录。这个目录已经存在,这是正常的错误。
答案 2 :(得分:0)
你不能创建一个目录两次,因为它创建了目录检查它的存在。
您可以使用is_dir()
和is_writeable()
来确保您可以写入此目录。
答案 3 :(得分:0)
替换
$targetpath = mkdir("pageimage/pageid");
使用..
$targetpath = if(is_dir("pageimage/pageid")) ? "pageimage/pageid" : mkdir("pageimage/pageid");
您应该在创建文件夹之前检查文件夹是否存在。
答案 4 :(得分:0)
第一个问题:第21行在哪里?
无论如何,您必须在创建目录之前测试目录是否存在。显然,它似乎已经存在于您的情况下(文件夹在技术上被认为是文件,例如参见is_dir()
)。使用file_exists()
。
还要注意,如果你创建一个结构(里面有一个文件夹和一个文件夹),你必须使用$recursive
参数,参见PHP doc:http://php.net/manual/fr/function.mkdir.php