Как я могу переместить файл в другую папку, используя php? - PullRequest
11 голосов
/ 21 ноября 2011

У меня есть форма загрузки, где пользователи могут загружать изображения, которые в данный момент загружаются, в папку, которую я создал, под названием «temp», и их местоположение сохраняется в массиве с именем $ _SESSION ['uploaded_photos']. Как только пользователь нажимает кнопку «Следующая страница», я хочу, чтобы он переместил файлы в новую папку, которая динамически создается прямо перед этим.

if(isset($_POST['next_page'])) { 
  if (!is_dir('../images/uploads/listers/'.$_SESSION['loggedin_lister_id'])) {
    mkdir('../images/uploads/listers/'.$_SESSION['loggedin_lister_id']);
  }

  foreach($_SESSION['uploaded_photos'] as $key => $value) { 
    $target_path = '../images/uploads/listers/'.$_SESSION['loggedin_lister_id'].'/';
    $target_path = $target_path . basename($value); 

    if(move_uploaded_file($value, $target_path)) {
      echo "The file ".  basename($value). " has been uploaded<br />";
    } else{
      echo "There was an error uploading the file, please try again!";
    }

  } //end foreach

} //end if isset next_page

Пример используемого значения $:

.. / изображения / загрузки / температуры / IMG_0002.jpg

И пример используемого $ target_path:

.. / изображения / загрузки / Листерс / 186 / IMG_0002.jpg

Я вижу файл, находящийся в папке temp, оба эти пути выглядят хорошо для меня, и я проверил, чтобы убедиться, что функция mkdir действительно создала папку, что она сделала хорошо.

Как я могу переместить файл в другую папку с помощью php?

1 Ответ

20 голосов
/ 21 ноября 2011

Когда я читаю ваш сценарий, похоже, что вы обработали загрузку и переместили файлы в папку «temp», и теперь вы хотите переместить файл, когда они выполняют новое действие (нажав на кнопку «Далее»).

Что касается PHP - файлы в вашем 'temp' больше не являются загруженными файлами, поэтому вы больше не можете использовать move_uploaded_file.

Все, что вам нужно сделать, это использовать переименовать :

if(isset($_POST['next_page'])) { 
  if (!is_dir('../images/uploads/listers/'.$_SESSION['loggedin_lister_id'])) {
    mkdir('../images/uploads/listers/'.$_SESSION['loggedin_lister_id']);
  }

  foreach($_SESSION['uploaded_photos'] as $key => $value) {
    $target_path = '../images/uploads/listers/'.$_SESSION['loggedin_lister_id'].'/';
    $target_path = $target_path . basename($value); 

    if(rename($value, $target_path)) {
      echo "The file ".  basename($value). " has been uploaded<br />";
    } else{
      echo "There was an error uploading the file, please try again!";
    }

  } //end foreach

} //end if isset next_page
...