所以我的网站上有一个文件上传部分,用户可以上传任何doc或docx文件夹。继承人我的HTML代码:
<form action="upload_file.php" method="post" enctype="multipart/form-data">
Select a file: <input type="file" name="upload">
<input type="submit">
这是upload_file.php的代码:
<?php
session_start();
$allowedExts = array("doc", "docx");
$extension = end(explode(".", $_FILES["upload"]["name"]));
if (($_FILES["upload"]["size"] < 200000)
&& in_array($extension, $allowedExts)) {
if ($_FILES["upload"]["error"] > 0)
{
echo "Return Code: " . $_FILES["upload"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["upload"]["name"] . "<br />";
echo "Type: " . $_FILES["upload"]["type"] . "<br />";
echo "Size: " . ($_FILES["upload"]["size"] / 1024) . " Kb<br />";
echo "Temp file: " . $_FILES["upload"]["tmp_name"] . "<br />";
if (file_exists("Proposals/".$_SESSION["FirstName"] ."/" . $_FILES["upload"]["name"]))
{
echo $_FILES["upload"]["name"] . " already exists. ";
}
else
{
move_uploaded_file($_FILES["upload"]["tmp_name"],
"Proposals/". $_SESSION["FirstName"] ."/". $_FILES["upload"]["name"]);
echo "Stored in: " . "Proposals/". $_SESSION["FirstName"] ."/". $_FILES["upload"]["name"];
}
}
} else {
echo "Invalid file";
}
?>
但即使它回复了成功的消息,这也不会上传任何内容。我在想它是因为它不会让我创建一个目录。上面的代码有什么问题,或者我是否需要添加更多代码才能创建目录。这是我的文件夹结构,如果它有帮助:
答案 0 :(得分:11)
您必须创建要将文件移动到的目录,它不会自动由move_uploaded_file创建。
使用mkdir(),http://php.net/mkdir创建目录,然后移动文件。
这是你的脚本的另一个结尾,应该做
// Create directory if it does not exist
if(!is_dir("Proposals/". $_SESSION["FirstName"] ."/")) {
mkdir("Proposals/". $_SESSION["FirstName"] ."/");
}
// Move the uploaded file
move_uploaded_file($_FILES["upload"]["tmp_name"], "Proposals/". $_SESSION["FirstName"] ."/". $_FILES["upload"]["name"]);
// Output location
echo "Stored in: " . "Proposals/". $_SESSION["FirstName"] ."/". $_FILES["upload"]["name"];
答案 1 :(得分:2)
您需要检查目录是否存在,如果不存在,请创建它。
if (!file_exists("Proposals/". $_SESSION["FirstName"])) {
mkdir("Proposals/". $_SESSION["FirstName"]);
}
答案 2 :(得分:0)
您正在将文件上传到不存在的目录,因此您需要先创建它,您的upload_file.php应该是
<?php
session_start();
$allowedExts = array("doc", "docx");
$extension = end(explode(".", $_FILES["upload"]["name"]));
if (($_FILES["upload"]["size"] < 200000)
&& in_array($extension, $allowedExts)) {
if ($_FILES["upload"]["error"] > 0)
{
echo "Return Code: " . $_FILES["upload"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["upload"]["name"] . "<br />";
echo "Type: " . $_FILES["upload"]["type"] . "<br />";
echo "Size: " . ($_FILES["upload"]["size"] / 1024) . " Kb<br />";
echo "Temp file: " . $_FILES["upload"]["tmp_name"] . "<br />";
if (file_exists("Proposals/".$_SESSION["FirstName"] ."/" . $_FILES["upload"]["name"]))
{
echo $_FILES["upload"]["name"] . " already exists. ";
}
else
{
// Check if directory exists if not create it
if(!is_dir("Proposals/". $_SESSION["FirstName"] ."/")) {
mkdir("Proposals/". $_SESSION["FirstName"] ."/");
}
move_uploaded_file($_FILES["upload"]["tmp_name"],
"Proposals/". $_SESSION["FirstName"] ."/". $_FILES["upload"]["name"]);
echo "Stored in: " . "Proposals/". $_SESSION["FirstName"] ."/". $_FILES["upload"]["name"];
}
}
} else {
echo "Invalid file";
}
?>