我是 PHP 的新手(也没有太多的 HTML 经验),我有一个问题。我有一个文件上传系统,它由两个 PHP 脚本组成(见下文)。在文件上传表单中,用户选择文件,保存文件夹,然后上传。保存位置可以从由上传目录中的文件夹组成的下拉菜单中选择。但是下拉菜单中还有另一个选项。如果用户选择该选项other
,则会出现一个新字段(由 JavaScript 完成)并且用户可以手动插入位置(例如,目录不存在并且用户想要创建一个新的)。
但这里有一个问题:如果用户选择了一个预定义的文件夹,一切正常,但如果用户将目录名称写入该字段,则只会folder
创建名为的文件夹。例如,如果用户想要上传关于花的图片并且不flower
存在名为的文件夹,则用户选择other
并写入flower
框。然后点击上传按钮,基本上 PHP 应该创建一个名为的新文件夹flower
并在那里上传图片。但是目前,PHP 创建了一个名为的文件夹folder
,由于某种原因,图片没有上传到那里(它没有上传到任何地方)。
我的脚本问题:
- 不会创建新文件夹。我认为这是因为我有两个名为“文件夹”的值,但我不知道如何让它工作,如果选择了“其他”,那么 PHP 只会查看最后一个值。
- 即使创建了文件夹,由于某种原因也不会在那里上传文件。
如果有人找到我的问题的解决方案并帮助我解决它,我将不胜感激。不要犹豫,询问额外的信息,因为我的英语不是最好的,因此有些事情无法理解。
提前致谢!
第一个文件file-upload.php
::
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title></title>
<script language="JavaScript" type="text/javascript">
<!--
function Toggle(obj){
var val=obj.value;
if (!obj.m){ obj.m=''; }
if (!obj.m.match(val)){ obj.m+=','+val+','; }
var hide=obj.m.split(',');
for (var zxc0=0;zxc0<hide.length;zxc0++){
if (document.getElementById(hide[zxc0])){
document.getElementById(hide[zxc0]).style.display='none';
}
}
var show=val.split(',');
for (var zxc1=0;zxc1<show.length;zxc1++){
if (document.getElementById(show[zxc1])){
document.getElementById(show[zxc1]).style.display='';
}
}
}
//-->
</script>
</head>
<body>
<h1>Upload</h1>
<form action="upload.php" method="post"
enctype="multipart/form-data"><br>
<label for="file">File:</label>
<input type="file" name="file" id="file" />
<br>
Tüüp: <select name="folder" value="folder" onchange="Toggle(this);">
<?php
foreach(glob('/uploadfolder/*', GLOB_ONLYDIR) as $dir)
{
$dir = basename($dir);
echo '<option value="', $dir, '">', $dir, '</option>';
}
?>
<option value="folder">other</option>
</select><br>
<input id="folder" value="Create a new folder" style="display:none;">
<input type="submit" name="submit" value="Upload" />
</form>
</body>
</html>
第二个文件upload.php
::
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title></title>
</head>
<body>
<h1>Upload</h1>
<br>
<?php
$dirname = $folder = $_POST["folder"];
$filename = "/uploadfolder/" . "$dirname" . "/";
if (!file_exists($filename)) {
mkdir("/uploadfolder/" . "$dirname", 0777);
}
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "application/vnd.openxmlformats- officedocument.spreadsheetml.sheet"))
&& ($_FILES["file"]["size"] < 5120000))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Name: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
echo "Tmp. file: " . $_FILES["file"]["tmp_name"] . "<br />";
echo "Folder: " . $folder . "<br />";
if (file_exists("/uploadfolder/$folder/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"/uploadfolder/$folder/" . $_FILES["file"]["name"]);
echo "Saved: " . "" . $_FILES["file"]["name"];
}
}
}
else
{
echo "Upload failed";
}
?>
</body>
</html>