Все проверочные значения: имя файла, размер, имя временного файла, тип - выводятся нормально. Код ошибки - 0. Это значит, что передача прошла успешно. Но сам имидж на сервер в указанную папку "images" (она находится в той же директоории, что и сам файл с вышеописанным кодом) не попадает и, соответственно, не выводится на экран (выводится только значение атрибута alt).
Подскажите, пожалуйста, что не так? Заранее извините за глупый, наверно, вопрос, но лично ни с кем из программеров не знаком и объяснить некому.
Спустя 8 минут, 23 секунды (1.09.2009 - 17:15) xPoint написал(а):
скорее всего в $target = 'images' . $_FILES ['fupload']['name'];
забыл поставить разделитель директорий между images и именем файла.
Спустя 17 минут, 38 секунд (1.09.2009 - 17:32) kern написал(а):
Вы имеете ввиду вот так:
PHP |
$target = "images/". $_FILES ['fupload']['name']; |
Тот же результат
Спустя 11 минут, 18 секунд (1.09.2009 - 17:44) xPoint написал(а):
у меня без проблем загружает гифку. Может тип не image/gif загружаете, а другой какой-нить? Или права на папку images не выставлены?
Спустя 15 минут, 41 секунда (1.09.2009 - 17:59) kern написал(а):
да вроде все проверил уже 10 раз - и файлы только .gif беру, и права выставлены, и пример из учебника - он по умолчанию должен работать, это не то, что я сам что-то понаписал. хотя и тот код, который я сам написал - работал, никаких ошибок не выдавал, но файлы так же не загружал.
Спустя 1 день, 5 часов, 6 секунд (2.09.2009 - 23:00) ZSH написал(а):
PHP |
move_uploaded_file ($source, $target); |
попробуй заменить на:
PHP |
copy($source, $target); |
Спустя 17 часов, 32 минуты, 7 секунд (3.09.2009 - 16:32) kern написал(а):
Не, не помогает, тот же результат.
Спустя 18 часов, 43 секунды (4.09.2009 - 10:32) sergeiss написал(а):
Проверь, что в описании формы у тебя указано именно enctype="multipart/form-data".
Спустя 3 часа, 7 минут, 13 секунд (4.09.2009 - 13:40) twin написал(а):
Цитата |
попробуй заменить на: PHP copy($source, $target); |
не надо так делать.
Спустя 2 дня, 23 часа, 23 минуты, 33 секунды (7.09.2009 - 13:03) ZSH написал(а):
а так?
PHP |
$source = $_FILES['fupload']['tmp_name']; if(!is_dir('images'))mkdir('images',0777); // создает папку если ее нет $target = 'images/' . $_FILES ['fupload']['name']; move_uploaded_file ($source, $target); $size = getimagesize ($target); |
Спустя 17 дней, 2 часа, 43 минуты, 55 секунд (24.09.2009 - 15:47) Антон написал(а):
У меня похожая проблема, но только дело в том, что он файл(рисунок в формате JPG) загружает, но его как-то портит, так что он потом не открывается.
Даже если я его по fttp назад скачаю - он не открывается.
Подскажите что делать, чтобы он не портился
Спустя 2 часа, 28 минут, 52 секунды (24.09.2009 - 18:16) twin написал(а):
О как... А по подробнее с этого места?
Спустя 6 часов, 48 минут, 34 секунды (25.09.2009 - 01:04) vuzy написал(а):
PHP |
if ($_FILES ['fupload']['type'] == "image/gif") { |
Объясните мне эту часть кода?.
Во первых: откуда взялось вместо upload - fupload и все дружно подхватили эту инициативу?
и во вторых: зачем проверять данное значение вообще?
Я покапался в своих учебниках по PHP нигде нет понятния fupload и поноценный скрипт загрузки страниц не содержит подобных строк.
если это попытка проверить разширение файла то думаю следует использовать функцию:
PHP |
$upload_file=$_FILES[upload][name]; $images_allow=array("JPG","jpg","GIF","gif","PNG","png"); $file_info=pathinfo($upload_file); //проверка на то что файл можно загружать. if (!(in_array($file_info['extension'],$image_allow))) { // дальше текст ошибки что юзер загрузил недопустимый файл. } //а потом уже проходит копирование файла и вывод всех сообщений. |
помоему так было бы гараздо надежнее.
Я сам такой скрипт юзал и все работает.
Спустя 8 минут, 46 секунд (25.09.2009 - 01:13) waldicom написал(а):
[fupload]- это имя твоего поля, которое
<input type="file" name="fupload" />
А ['type'] - это часть структуры, которую создает php автоматически.
Таким образом в элементе $_FILES ['fupload']['type'] хранится тип загруженного файла (по мнению php).
Спустя 12 минут, 48 секунд (25.09.2009 - 01:26) vuzy написал(а):
а тогда зачем?
PHP |
if (isset($_FILES['fupload'])) |
Я такой функции проверки тоже ниразу не видел..
помоему следовало бы использовать в форме имя для кнопки субмит в первую очередь:
PHP |
<input type="submit" value="Загрузить" name=ok_upload> |
потом уже при обработке проверять:
PHP |
if (isset($_POST['ok_upload'])) |
вот снова проштудировал книги по PHP таки да
$_FILES[fupload][type] содержит в себе расширение накшталт image/gif
Поэтому прошу прощения за дилетантизм и вопрос снимаю.
Ради любопытсва скопировал представленный сценарий загрузки файла себе разделил сценарии на форму index.php и на обработчик upload.php
получилось следующее.
Файл успешно загружается с компьютера на сервер.
Более того. в имя добавляется надпись images и получается что то вроде imagesсертификат.gif
ВЫВОД:
PHP |
$target = 'images' . $_FILES ['fupload']['name']; |
заменить на:
PHP |
$target = 'images/'.$_FILES ['fupload']['name']; |
и лишний раз проверить все на наличие заглавных букв в именах файлов и директорий.
Спустя 10 часов, 35 минут, 43 секунды (25.09.2009 - 12:02) twin написал(а):
PHP |
if (isset($_FILES['fupload'])) |
это зря. Корректно было бы так:
PHP |
if($_FILES['fupload']['error'] === 0) |
Цитата |
вот снова проштудировал книги по PHP таки да $_FILES[fupload][type] содержит в себе расширение накшталт image/gif Поэтому прошу прощения за дилетантизм и вопрос снимаю. |
Это тоже зря. Дело в том, что разные браузеры MIME передают по разному. Так что лучше проверять так, как раньше -
PHP |
if (!(in_array($file_info['extension'],$image_allow))) |
Спустя 6 минут, 28 секунд (25.09.2009 - 12:08) Антон написал(а):
Я извиняюсь, что вмешиваюсь, но хотел бы развить свою проблему, которая касалась того, что рисунок портится и не открывается, хотя файл скачивается на сервер.
Это код моих страничек:
Форма:
___________________________________________________________
HTML |
<table width=100% height=100% border=0 cellpadding=0 cellspacing=0> <tr><td align=center valign=middle> <h2><p><b> Форма для загрузки файла <br>фотографии... </b></p></h2> <form action="index.php?menu=fotoloadsave" method="post" enctype="multipart/form-data"> <table border=1 cellpadding=5 cellspacing=5> <tr><td> <input type="hidden" name="max_file_size" value="512000"> <input type="file" name="filename" size=70><br> <tr><td align=center> <input type="submit" value="Загрузить"><br> </table> </form> </table> |
____________________________________________________________
____________________________________________________________
Обработчик:
____________________________________________________________
PHP |
$name_foto="ID$id".$_FILES["filename"]["name"]; $adres_foto="foto-user/".$name_foto; if (move_uploaded_file($_FILES['filename']['tmp_name'], $adres_foto)) { echo("Файл успешно загружен <br>"); echo("Характеристики файла: <br>"); echo("Имя файла: "); echo($_FILES["filename"]["name"]); echo("<br>Размер файла: "); echo($_FILES["filename"]["size"]); echo("<br>Каталог для загрузки: "); echo($_FILES["filename"]["tmp_name"]); echo("<br>Тип файла: "); echo($_FILES["filename"]["type"]);} |
Спустя 42 минуты, 30 секунд (25.09.2009 - 12:51) twin написал(а):
Не должно так быть... Это локально или на хотинге?
Спустя 7 минут, 11 секунд (25.09.2009 - 12:58) Антон написал(а):
Это на бесплатном хостинге hut
Спустя 2 часа, 39 минут, 45 секунд (25.09.2009 - 15:38) vuzy написал(а):
ну лично я всегда использую сей способ:
PHP |
if (!(in_array($file_info['extension'],$image_allow))) |
Цитата |
Это на бесплатном хостинге hut |
не пробовал проверять скрипт локально? может дело в хостинге?
Спустя 2 дня, 19 часов, 14 минут, 52 секунды (28.09.2009 - 10:53) Антон написал(а):
Локально пока не проверял, надо будет попробовать....
А что это за способ не совсем понятно? Что за переменная - $image_allow?
Спустя 56 минут, 16 секунд (28.09.2009 - 11:49) atarix написал(а):
Цитата |
А что это за способ не совсем понятно? Что за переменная - $image_allow? |
массив разрешённых типов. условие проверяет файл на не соответствие этих типов
Спустя 1 год, 6 месяцев, 4 часа, 58 минут, 15 секунд (28.03.2011 - 16:47) Pasica написал(а):
if ($_FILES ['fupload']['type'] == "image/gif")
эта строчка может говорит скрипту, что надо грузить файлы с расширением gif!!!
[php]
if ($_FILES ['fupload']['type'] == "image/gif" or "image/jpg" or "image/jpeg" or "image/png")
//теперь всё грузит