用php上传图像
我想在目录中添加图像。目录会动态生成。但在目录中上载图像时出错,因此无法上载图像。错误如下: 警告:mkdir():文件位于第21行的C:\wamp\www\test\index.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=
<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()
,它将失败,因为已经存在同名的文件/文件夹。