copy()函数的第二个参数不能是目录

Jor*_*orm 15 php

任何人都知道为什么:

<?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/');
}
Run Code Online (Sandbox Code Playgroud)

得到:

警告:move_uploaded_file()[function.move-uploaded-file]:copy()函数的第二个参数不能是第41行的C:\ wamp\www\upload.php中的目录
警告:move_uploaded_file()[function.move-uploaded-file]:无法在C:\ wamp \中将'C:\ wamp\tmp\php1AB.tmp'移动到'c:\ wamp\www\uploads\images /'第41行的www\upload.php

Sam*_*uel 31

这是因为您正在移动文件,并且它认为您正在尝试将该文件重命名为第二个参数(在本例中为导演).

它应该是:

move_uploaded_file($_FILES['userfile']['tmp_name'], 'c:/wamp/www/uploads/images/'.$file['name']);
Run Code Online (Sandbox Code Playgroud)

  • 使用正斜杠而不是反斜杠 (2认同)

Mar*_*off 7

您正在指定将文件移动到目录; PHP move_uploaded_file和它copy的智能都不如shell的副本 - 您必须为目标指定文件名而不是目录.

因此,一个简单的解决方案是获取basename源文件并将其附加到目标目录.