Вторым аргументом копии () функция не может быть каталог

Любой знает почему это:

<?PHP
$title = trim($_POST['title']);
$description = trim($_POST['description']);

// Array of allowed image file formats 
$allowedExtensions = array('jpeg', 'jpg', 'jfif', 'png', 'gif', 'bmp');

foreach ($_FILES as $file) {
  if ($file['tmp_name'] > '') {
    if (!in_array(end(explode(".",
            strtolower($file['name']))),
            $allowedExtensions)) {
      echo '<div class="error">Invalid file type.</div>';
    }
  }
}

if (strlen($title) < 3)
  echo '<div class="error">Too short title</div>';
else if (strlen($description) > 70)
  echo '<div class="error">Too long desccription.</div>';

else {
  move_uploaded_file($_FILES['userfile']['tmp_name'], 'c:\wamp\www\uploads\images/');
}

Дает:

Предупреждение: move_uploaded_file () [function.move-uploaded-file]: вторым аргументом копии () функция не может быть каталог в C:\wamp\www\upload.php на строке 41
Предупреждение: move_uploaded_file () [function.move-uploaded-file]: Не мог переместить 'C:\wamp\tmp\php1AB.tmp' в 'c:\wamp\www\uploads\images /' в C:\wamp\www\upload.php на строке 41
15
задан timdev 11 April 2010 в 19:42
поделиться

4 ответа

Это потому, что вы перемещаете файл, и он думает, что вы пытаетесь переименовать этот файл по второму параметру (в данном случае директору).

это должно быть:

move_uploaded_file($_FILES['userfile']['tmp_name'], 'c:/wamp/www/uploads/images/'.$file['name']);
31
ответ дан 1 December 2019 в 00:49
поделиться

Вы указываете, чтобы переместить файл в каталог; ни move_uploaded_file PHP, ни его копия не так умны, как копия оболочки - вы должны указать имя файла , а не каталог, в качестве места назначения.

Итак, одним из простых решений было бы взять базовое имя исходного файла и добавить его в целевой каталог.

7
ответ дан 1 December 2019 в 00:49
поделиться

Похоже, что вторым аргументом move_uploaded_file должно быть полное имя файла, а не только имя каталога. Кроме того, вероятно, только проблема стиля, но вы должны использовать последовательные косые черты в 'c: \ wamp \ www \ uploads \ images /'

1
ответ дан 1 December 2019 в 00:49
поделиться

Потому что PHP - это не оболочка. Вы пытаетесь скопировать файл в каталог c:\wamp\www\uploads\images, но PHP не знает, что вы имеете в виду это, когда вы выполняете (в функции move_uploaded_file):

copy($_FILES['userfile']['tmp_name'], 'c:\wamp\www\uploads\images/');

Эта команда говорит ему переименовать файл в c:\wamp\www\uploads\images/, что он не может сделать, потому что это имя существующего каталога.

Вместо этого сделайте следующее:

  move_uploaded_file($_FILES['userfile']['tmp_name'], 
    'c:\wamp\www\uploads\images/' . basename($_FILES['userfile']['tmp_name']));
1
ответ дан 1 December 2019 в 00:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: