用PHP上传文件

用PHP上传文件,php,file-upload,upload,Php,File Upload,Upload,我正在尝试使用PHP上传一个文件 我的文件夹结构如下所示: 我在根htdocs文件夹中有一个名为schemas的目录。在这个文件夹中,我想为每个用户创建一个新文件夹;在这个文件夹中,我将存储用户特定的文件 目前,我的代码还不完整(不检查文件夹/文件是否已经存在,并且可能会出错),但我只是尝试让基础工作正常进行 <?php if ($_FILES ["bestand"] ["error"] > 0) { //for error messages: see http://php.net/

我正在尝试使用PHP上传一个文件

我的文件夹结构如下所示:

我在根htdocs文件夹中有一个名为
schemas
的目录。在这个文件夹中,我想为每个用户创建一个新文件夹;在这个文件夹中,我将存储用户特定的文件

目前,我的代码还不完整(不检查文件夹/文件是否已经存在,并且可能会出错),但我只是尝试让基础工作正常进行

<?php
if ($_FILES ["bestand"] ["error"] > 0) {
//for error messages: see http://php.net/manual/en/features.fileupload.errors.php
switch ($_FILES ["bestand"] ["error"]) {
case 1 :
$msg = "U mag maximaal 2MB opladen.";
break;
default :
$msg = "Sorry, uw upload kon niet worden verwerkt.";
}
} else {
//check MIME TYPE - http://php.net/manual/en/function.finfo-open.php
$allowedtypes = array ("application/pdf" );
$filename = $_FILES ["bestand"] ["tmp_name"];
$finfo = new finfo ( FILEINFO_MIME_TYPE );
$fileinfo = $finfo->file ( $filename );

if (in_array ( $fileinfo, $allowedtypes )) {
//move uploaded file
$dir = "schemas";
chdir("schemas");
$user_folder = str_replace(" ", "", $_POST['schema']);
mkdir( $user_folder, 0777);
//  echo getcwd();
//  closedir($open);
$folder = "/schemas/" . $user_folder . "/" . $_FILES ["bestand"] ["name"];
echo $folder;
echo $user_folder;

if (move_uploaded_file ( $_FILES ["bestand"] ["tmp_name"], $folder )) {
$msg = "Uw schema is succesvol geupload!";
} else {
$msg = "Upload mislukt.";
}
} else {
$msg = "U kan enkel een pdf uploaden.";
}
}
echo $msg . "<br />"; 

?>

脚本确实创建了文件夹(在本例中为
loesp
),但似乎没有上载或移动实际文件。我被难住了。

问题是您使用的是一条绝对路径,它从整个机器的根开始。您应该使用相对路径,它应该从当前工作目录开始

您已经在
schemas
文件夹中(在调用chdir之后),因此$folder应该设置为:

$folder = $user_folder . "/" . $_FILES ["bestand"] ["name"];

(参考)尝试使用完整路径而不是相对路径,看看这是否有帮助。此外,通过查看手册,destinatin似乎还应该包含目标文件名,而不仅仅是文件夹名。
$folder = $user_folder . "/" . $_FILES ["bestand"] ["name"];