我有一个名为'files'的目录,其中包含代表用户上传空间的文件夹,例如files/14
其中“14”是用户的UserID。
我正在尝试创建一个简单的脚本,在上传文件时,脚本:
这是代码:
<?php
include("dbConfig.php");
$Username = $_SESSION["username"];
global $userid;
$Password = $_SESSION["password"];
$Password = md5($Password);
$sql = "SELECT UserID FROM users WHERE Username = '".$Username."'";
$result = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_assoc($result)) {
$userid = $row['UserID'];
}
$dirname = (string)$userid;
$filename = ("$dirname" . "/");
if (!file_exists("../files/" .$filename)) {
mkdir("files/$dirname", 0775);
} else {
if (isset($_FILES['files'])) {
echo "<div id='files_table'><table class='center'.><tr><td>";
foreach($_FILES['files']['tmp_name'] as $key => $tmp_name) {
$dest = ($filename . "{$_FILES['files']['name'][$key]}");
move_uploaded_file($tmp_name, $dest );
echo $_FILES['files']['name'][$key], " uploaded.", "<br>";
}
}
}
?>
虽然正在创建用户目录,但文件正被上传到根目录(../files)。
此外,警告不会被忽略,给我这个错误:
**Warning: mkdir(): File exists in C:\xampp\htdocs\Task2PHP\final\upload.php on line 80**
任何人都可以帮助我并告诉我如何解决这个问题吗?
答案 0 :(得分:1)
如何为两个呼叫使用相同的结构?
例如:
if (!file_exists("../files/" .$filename)) {
mkdir("../files/" .$filename, 0775);
您似乎一方面检查是否存在一个文件/文件夹,并且自../files
以来在其他地方创建另一个文件/文件夹!= files/
另外navnav是对的,你应该停止使用相对路径。未来的担忧问题。特别是如果你使用一些框架和网址重新打印。