Загрузка файла в PHP - PullRequest
2 голосов
/ 11 мая 2011

Я пытаюсь загрузить файл с помощью PHP.

Моя структура папок следующая:

У меня есть каталог с именем schemas в моей корневой папке htdocs. Внутри этой папки я хочу создать новую папку для каждого пользователя; в этой папке я буду хранить пользовательские файлы.

На данный момент мой код неполон (не проверяет, существует ли уже папка / файл и может ли это привести к ошибке), но я просто пытаюсь заставить работать основы.

<?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 />"; 

?>

Когда я пытаюсь это сделать, я получаю следующие предупреждения:

Warning: move_uploaded_file(/schemas/loesp/loopschema-0-tot-5-kilometer.pdf) [function.move-uploaded-file]: failed to open stream: No such file or directory in /Applications/MAMP/htdocs/Sportjefit2/uploadenfile.php on line 30

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/Applications/MAMP/tmp/php/phpMsxxsu' to '/schemas/loesp/loopschema-0-tot-5-kilometer.pdf' in /Applications/MAMP/htdocs/Sportjefit2/uploadenfile.php on line 30

Сценарий создает папку (в данном случае loesp), но, похоже, не загружает и не перемещает фактический файл. Я в тупике.

1 Ответ

4 голосов
/ 11 мая 2011

Проблема в том, что вы используете абсолютный путь, который начинается в корне всей машины.Вы должны использовать относительный путь, и он должен начинаться с текущего рабочего каталога.

Вы уже находитесь в папке schemas (после вызова chdir), поэтому для папки $ должно быть установлено следующее:1004 *

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