Кто-нибудь знает, почему это:
<?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]: второй аргумент функции copy () не может быть каталогом в 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
Это потому, что вы перемещаете файл, и он думает, что вы пытаетесь переименовать этот файл во второй параметр (в данном случае – режиссер).
должен быть:
move_uploaded_file($_FILES['userfile']['tmp_name'], 'c:/wamp/www/uploads/images/'.$file['name']);
Вы указываете перемещение файла в каталог; ни move_uploaded_file
ни его copy
не move_uploaded_file
умны, как копия оболочки – вы должны указать имя файла , а не каталог для адресата.
Таким образом, одним простым решением было бы взять basename
имя исходного файла и добавить его в целевой каталог.
Похоже, второй аргумент move_uploaded_file
должен быть полным именем файла, а не только именем каталога. Кроме того, возможно, только проблема стиля, но вы должны использовать согласованные косые черты в 'c:\wamp\www\uploads\images/'
Поскольку 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']));
если вы хотите просто скопировать файл в два разных Dir, попробуйте следующее:
if (move_uploaded_file($_FILES['photo']['tmp_name'], $target.$pic1)) { copy("C:/Program Files (x86)/EasyPHP-5.3.9/www/.../images/".$pic1, "C:/Program Files (x86)/EasyPHP-5.3.9/www/.../images/thumbs/".$pic1) }
Вы должны написать полный путь «C: / …»
Попробуйте добавить расширение к файлу имен.
$filename = $_FILES['userfile']['tmp_name'].".jpg";