2013-08-22 2 views
0

Это мой PHP кодзагрузить файл PHP и перейти в папку

<?php 
    if ($_FILES["file"]["error"] > 0) 
    { 
     echo "Return Code: " . $_FILES["file"]["error"] . "<br>"; 
    } 
    else 
    { 
     echo "Upload: " . $_FILES["file"]["name"] . "<br>"; 
     echo "Type: " . $_FILES["file"]["type"] . "<br>"; 
     echo "Size: " . ($_FILES["file"]["size"]/1024) . " kB<br>"; 
     echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>"; 

     if (file_exists("upload/" . $_FILES["file"]["name"])) 
     { 
      echo $_FILES["file"]["name"] . " already exists. "; 
     } 
     else 
     { 
      mkdir("upload/".$title, 0700); 
      move_uploaded_file($_FILES["file"]["tmp_name"], 
      "upload/".$title . $_FILES["file"]["name"]); 
      echo "Stored in: " ."upload/".$title . $_FILES["file"]["name"]; 
     } 
    } 
?> 

Простой файл загрузка в соответствии с W3C, однако я добавил MKDIR создать каталог на основе заглавия пользовательского ввода.

Папка создаётся отлично, но файл не будет перемещаться в нее, не уверен, что это что-то простое, я думал, но использую concatenate '.' я мог бы просто определить местоположение файла, как я имел с MKDIR

HTML, это просто просто ввести тип = файл и и ввод текста типа для названия

+1

Я предполагаю, где определен '$ title', вы разбираете его, чтобы удалить символы, которые не разрешены в имени папки? –

+0

спасибо за головы, я даже не подумал, я просто вытаскивал вход пользователя и хранил его в переменной, вы только что спасли мне будущую головную боль, спасибо снова – user2389087

+0

Нет проблем. Не забудьте принять ответ! –

ответ

2

Вам нужен / после $title использовать новую папку.

move_uploaded_file($_FILES["file"]["tmp_name"], "upload/".$title."/".$_FILES["file"]["name"]); 
+0

Спасибо, что сделал это "upload /".$ title. '/'. – user2389087

+1

Обратите внимание, что вашему запросу 'if file_exists' также нужна переменная' $ title'. –

0

Вам не хватает косой черты на вашем пути, как указано @Grim выше. Я хотел бы объяснить, почему:

echo "Stored in: " ."upload/".$title . $_FILES["file"]["name"]; 
            --^ 

Изменение его к следующему должно решить проблему:

echo "Stored in: " ."upload/".$title . "/" . $_FILES["file"]["name"]; 

Ваш путь неверен и move_uploaded_file не сможет найти файл по указанному пути и ваш код не будет работать так, как вы ожидаете.

без косых черты, это то, что ваша функция будет выглядеть на самом деле (если вы определите переменный $ названия где-то посередине):

upload/fooFilename 

Вы на самом деле нужны:

upload/foo/Filename 

Надеется, что это помогает !

+0

Изменение эха не решит проблему (хотя это сделает эту строку более точной). Я постоянно * меняю неправильную вещь, показывая переменную запроса или что-то на экран, чтобы ее отлаживать, - сводит меня с ума! –

Смежные вопросы