PHP move_uploaded_file в каталог и создать файл - PullRequest
1 голос
/ 14 марта 2011

У меня есть скрипт, который загружает файл, а затем перемещает его в каталог. Однако сценарий не знает имя создаваемого файла, поскольку он еще не создал его и не может найти файл для обновления.

Так что либо нужно сначала создать файл, либо есть другой способ сделать это. Код.

<?php

$filename = '/home/divethe1/public_html/update/z-images/admin/upload/test/';

if ($_FILES['thumbfile']['error'] === UPLOAD_ERR_OK) {
    $info = getimagesize($_FILES['thumbfile']['tmp_name']);
    if (($info[2] !== IMG_GIF) && ($info[2] !== IMG_JPEG)) {
       die("not a gif/jpg");
    }
    if (filesize($_FILES['thumbfile']['tmp_name']) > 100000) {
       die("larger than 100000");
    }
    move_uploaded_file($_FILES['thumbfile']['tmp_name'], $filename . $_FILES['thumbfile']['name']);

      echo '<script type="text/javascript">
parent.document.getElementById("thumbprogress").innerHTML = "Archiving"</script>Archiving';

  }
else
  {
  echo '<script type="text/javascript">
parent.document.getElementById("thumbprogress").innerHTML = "Invalid File Format"</script>Invalid File Format';
  }
?>

Есть идеи?

Ответы [ 2 ]

1 голос
/ 14 марта 2011

Я думаю, вы не понимаете, как работает move_uploaded_file ().Он не создает файл для вас.Это:

  1. Принимает временный файл, созданный PHP, для хранения загрузки (имя файла / путь к которой указан в $_FILES['thumbfile']['tmp_name'])
  2. выполняет несколько проверок безопасности, чтобы убедиться, чтоникто не вмешивался в файл между моментом завершения загрузки и вызовом move_uploaded_file
  3. , затем перемещает файл в указанное вами местоположение.

Он не обрабатывает загрузкуили получите файл - к моменту запуска сценария обработки загрузки загрузка уже завершена, и файл ожидает в этом tmp_name месте.

Если перемещение не может быть завершенопо любой причине move_uploaded_file() возвращает false.Он не предупредит вас, если вы перезаписываете файл в месте назначения, при условии, что вы знаете, что делаете.

0 голосов
/ 14 марта 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...