Есть вопрос?
Зайди на форум

Поиск на сайте: Advanced

Denix - новый дистрибутив Linux. Русификация Ubuntu и установка кодеков

dkws.org.ua
Форум сайта dkws.org.ua
 
Главная    ТемыТемы    АльбомАльбом    РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Загрузка файлов на сервер
На страницу Пред.  1, 2, 3, 4  След.
 
Начать новую тему Ответить на тему    Список форумов dkws.org.ua -> PHP
 
Автор Сообщение
yok

Участник тусовки


Зарегистрирован: 06.02.2008
Сообщения: 260
Откуда: krasnodar

СообщениеДобавлено: Пт Сен 18, 2009 9:32 am    Заголовок сообщения:
Ответить с цитатой

Короче я по ложному следу пошел. Чего это я решил проверять массив $_FILES[] , это как проверять $_POSTмассив.
Все проше, 4 ошибка это отсутствие позиции. И все.

Вот в руководстве по пхп нашел

В случае, если при отправке формы файл выбран не был, PHP установит переменную $_FILES['userfile']['size'] значением 0, а переменную $_FILES['userfile']['tmp_name'] - пустой строкой. none.

значит возможно лучше так проверять наличие загруженного файла.


Последний раз редактировалось: yok (Ср Сен 23, 2009 6:12 am), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
yok

Участник тусовки


Зарегистрирован: 06.02.2008
Сообщения: 260
Откуда: krasnodar

СообщениеДобавлено: Пн Сен 21, 2009 7:12 am    Заголовок сообщения:
Ответить с цитатой

Заметил такое дело при попытке применить условие при работе с типом файла, в частности jpg
В IE, тип выводит image/pjpeg , а в опере image/jpeg, и как следствие,
if($_SERVER['my_foto']['type'] == "image/pjpeg")
условие работало в интернет эксплорере а в опере нет и наоборот.
а ведь тип будет необходим если imagecreatefromjpeg

Никто не сталкивался?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
den

Старожил


Зарегистрирован: 31.01.2006
Сообщения: 13870
Откуда: Кировоград, Украина

СообщениеДобавлено: Пн Сен 21, 2009 8:01 am    Заголовок сообщения:
Ответить с цитатой

Нет, не сталкивался, возможно просто не обращал внимания.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение dhsilabs@jabber.ru
yok

Участник тусовки


Зарегистрирован: 06.02.2008
Сообщения: 260
Откуда: krasnodar

СообщениеДобавлено: Ср Сен 23, 2009 6:33 am    Заголовок сообщения:
Ответить с цитатой

Для идущих по следу:
очень удобно и думаю правильно с типо\форматом работать из массива возврашаемого getimagesize()
третий индеск 1-гиф 2-джпег 3-пнг и далее
switch($image_type){
case1:
работает с гиф imagecreatefromxxxx для каждого кейса свой и так далее где
list($width,$height,$image_type)=getimagesize($foto);
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
александр1




Зарегистрирован: 23.02.2013
Сообщения: 7

СообщениеДобавлено: Сб Фев 23, 2013 3:10 pm    Заголовок сообщения:
Ответить с цитатой

Здравствуйте!
Вопрос по загрузке файлов на сервер.
ВОТ ФОРМА ВСЁ КАК В КНИГЕ
<form enctype="multipart/form-data" action="upload.php" method="post">
&nbsp;&nbsp;Выберите файл: <input name="upfile" type="file" />
<input type="submit" value="загрузить" />
</form>
ВОТ ОБРАБОТЧИК КАК В КНИГЕ
<?php

// каталог для загрузки файлов
// В Linux/FreeBSD/UNIX не забудьте установить права 777 для этого каталога!
$dir = './upload/';

// В multipart-форме мы определили имя input-поля upfile
// Это имя нужно использовать при работе с массивом $_FILES
if(isset($_FILES["upfile"]))
{
$upfile = $_FILES["upfile"]["tmp_name"];
$upfile_name = $_FILES["upfile"]["name"];
$upfile_size = $_FILES["upfile"]["size"];
$upfile_type = $_FILES["upfile"]["type"];
$error_code = $_FILES["upfile"]["error"];

// Если ошибок нет
if($error_code == 0)
{
// выводим информацию о принятом файле
echo "Имя файла на сервере: ".$upfile."<br>";
echo "Имя файла на компьютере пользователя: ".$upfile_name."<br>";
echo "MIME-тип файла: ".$upfile_type."<br>";
echo "Размер файла: ".$upfile_size."<br><br>";

// дополняем имя файла
$upfile_name = $dir . $upfile_name;

// копируем временный файл в каталог $dir, имя файла будет исходное,
// т. е. как на компьютере у пользователя
// первый параметр — источник
// второй параметр — получатель
copy($upfile,$upfile_name,$dir);

// можно использовать функцию move_uploaded_file()
//move_uploaded_file($upfile, $upfile_name);

}
}

?>

ВОТ ТАКУЮ ОШИБКУ ВЫДАЁТ
Имя файла на сервере: C:\www\xampp\tmp\php5967.tmp
Имя файла на компьютере пользователя: фото.jpg
MIME-тип файла: image/jpeg
Размер файла: 23477

Предупреждение: (. / Загрузки / фото.jpg) копию [function.copy]: не удалось открыть поток: Нет такого файла или каталога в C: \ WWW \ XAMPP \ htdocs \ Sayt \ upload.php на линии 41

ПОДСКАЖИТЕ где и что ещё нужно сделать?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
den

Старожил


Зарегистрирован: 31.01.2006
Сообщения: 13870
Откуда: Кировоград, Украина

СообщениеДобавлено: Вс Фев 24, 2013 6:32 am    Заголовок сообщения:
Ответить с цитатой

Начнем с того, что у вас винда, поэтому измените путь к папке загрузки, куда загружается файл

./upload

на upload\

также измените остальной код, который влияет на образование пути к файлу
Вернуться к началу
Посмотреть профиль Отправить личное сообщение dhsilabs@jabber.ru
александр1




Зарегистрирован: 23.02.2013
Сообщения: 7

СообщениеДобавлено: Вс Фев 24, 2013 3:15 pm    Заголовок сообщения:
Ответить с цитатой

так у меня вообще нечего не получается.

а если так:
$dir = 'upload';
то выдаёт только это:
Имя файла на сервере: C:\www\xampp\tmp\php412A.tmp
Имя файла на компьютере пользователя: animegirl.jpg
MIME-тип файла: image/jpeg
Размер файла: 25648
Никак в толк не возьму. Где и что нужно исправлять?
Уже всю голову сломал.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
александр1




Зарегистрирован: 23.02.2013
Сообщения: 7

СообщениеДобавлено: Вс Фев 24, 2013 6:39 pm    Заголовок сообщения:
Ответить с цитатой

Есть продвижение.
Теперь само изображение копируется в директорию сайта. Это так и должно быть?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Anderson

Завсегдатай


Зарегистрирован: 08.07.2006
Сообщения: 642
Откуда: localhost

СообщениеДобавлено: Пн Фев 25, 2013 9:38 am    Заголовок сообщения:
Ответить с цитатой

Код:
copy($upfile,$upfile_name,$dir);


Функция принимает 2 аргумента - источник и получатель. Поэтому должно быть так:

Код:
copy($upfile, $dir.DIRECTORY_SEPARATOR.$upfile_name);

$upfile - имя загруженного файла на сервере
$dir.DIRECTORY_SEPARATOR.$upfile_name - директория назначения ПЛЮС слэш (прямой или обратный - это PHP решает) и название исходного файла. НО! НАСТОЯТЕЛЬНО НЕ РЕКОМЕНДУЕТСЯ сохранять файл с именем, которое задал пользователь, потому что он может загрузить PHP-скрипт или другую фигню и заменить ваши файлы на сервере. Поэтому $upfile_name лучше сгенерировать самому (или хотя бы заменить в нем все символы, кроме точек, букв и цифр на, скажем, подчеркивание - '_')
_________________
ArchLinux + Enlightenment 17 (E17)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение anderson.dunai@gmail.com Моб. телефон ICQ Number
александр1




Зарегистрирован: 23.02.2013
Сообщения: 7

СообщениеДобавлено: Пн Фев 25, 2013 3:51 pm    Заголовок сообщения:
Ответить с цитатой

Многоуважаемый автор!
ВОТ КОД ФАЙЛА.

<?php

$dir = "upload";

if(isset($_FILES["upfile"]))
{
$upfile = $_FILES["upfile"]["tmp_name"];
$upfile_name = $_FILES["upfile"]["name"];
$upfile_size = $_FILES["upfile"]["size"];
$upfile_type = $_FILES["upfile"]["type"];
$error_code = $_FILES["upfile"]["error"];

if($error_code == 0)
{
echo "Имя файла на сервере: ".$upfile."<br>";
echo "Имя файла на компьютере пользователя:".$upfile_name. <br>";
echo "MIME-тип файла: ".$upfile_type."<br>";
echo "Размер файла: ".$upfile_size."<br><br>";

$upfile_name = $dir . $upfile_name;

copy($upfile,$upfile_name);
}
}

?>

ВОТ ЧТО ВЫДАЁТ.
Имя файла на сервере: C:\www\xampp\tmp\phpD785.tmp
Имя файла на компьютере пользователя: animegirl.jpg
MIME-тип файла: image/jpeg
Размер файла: 25648

ПОЛНЫЙ ПУТЬ В ДИРЕКТОРИЮ ТАКОЙ.

c/www/xampp/htdocs/sayt
ПОМОГИТЕ!!!

Допишите где нужно и что нужно или исправте что нужно.
Уже всё перепробовал нечего не получается.
Копирует изображение в директорию сайта и всё.

БУДУ ВАМ ОЧЕНЬ ПРИЗНАТЕЛЕН!!!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
den

Старожил


Зарегистрирован: 31.01.2006
Сообщения: 13870
Откуда: Кировоград, Украина

СообщениеДобавлено: Пн Фев 25, 2013 8:15 pm    Заголовок сообщения:
Ответить с цитатой

александр1, не нужно истерить! Раз код попал в книгу, он рабочий. А этот код рабочий вдвойне так, как он используется во многих моих проектах. Раз не получается, значит проблема в ВАШЕЙ системе. И нужно разобраться, почему код не работает на вашей системе.

Сейчас поставлю иксамп и посмотрю этот код.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение dhsilabs@jabber.ru
александр1




Зарегистрирован: 23.02.2013
Сообщения: 7

СообщениеДобавлено: Вт Фев 26, 2013 7:03 pm    Заголовок сообщения:
Ответить с цитатой

Может в XAMPP всё дело?
Вы проверили код? Все кавычки? Точки?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
den

Старожил


Зарегистрирован: 31.01.2006
Сообщения: 13870
Откуда: Кировоград, Украина

СообщениеДобавлено: Вт Фев 26, 2013 7:10 pm    Заголовок сообщения:
Ответить с цитатой

Только что проверил на своем XAMPP. Код рабочий подкорректировал только каталог, в который загружаются файлы:

<?php

$dir = "upload/";

if(isset($_FILES["upfile"]))
{
$upfile = $_FILES["upfile"]["tmp_name"];
$upfile_name = $_FILES["upfile"]["name"];
$upfile_size = $_FILES["upfile"]["size"];
$upfile_type = $_FILES["upfile"]["type"];
$error_code = $_FILES["upfile"]["error"];

if($error_code == 0)
{
echo "Имя файла на сервере: ".$upfile."<br>";
echo "Имя файла на компьютере пользователя:".$upfile_name. "<br>";
echo "MIME-тип файла: ".$upfile_type."<br>";
echo "Размер файла: ".$upfile_size."<br><br>";

$upfile_name = $dir . $upfile_name;

copy($upfile,$upfile_name);
}
}

?>
Вернуться к началу
Посмотреть профиль Отправить личное сообщение dhsilabs@jabber.ru
den

Старожил


Зарегистрирован: 31.01.2006
Сообщения: 13870
Откуда: Кировоград, Украина

СообщениеДобавлено: Ср Фев 27, 2013 9:23 am    Заголовок сообщения:
Ответить с цитатой

То есть проблема в том, что вы неправильно указываете каталог для загрузки. Может еще быть проблема с правами, если используется NTFS, но это маловероятно.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение dhsilabs@jabber.ru
александр1




Зарегистрирован: 23.02.2013
Сообщения: 7

СообщениеДобавлено: Ср Фев 27, 2013 5:22 pm    Заголовок сообщения:
Ответить с цитатой

НЕ ЧЕГО НЕ ПОЙМУ.
С Вашим кодом выдаёт вот что.

Имя файла на сервере: C:\www\xampp\tmp\php7E05.tmp
Имя файла на компьютере пользователя:getImage2.jpg
MIME-тип файла: image/jpeg
Размер файла: 96414


Warning: copy(upload/getImage2.jpg) [function.copy]: failed to open stream: No such file or directory in C:\www\xampp\htdocs\sayt\upload.php on line 30

ПЕРЕВОЖУ:
Внимание: копия (upload/getImage2.jpg) [function.copy]: не удалось открыть поток: Нет такого файла или каталога в C: \ WWW \ XAMPP \ htdocs \ Sayt \ upload.php на линии 30

На 30 линии вот эта строка:

copy($upfile,$upfile_name);

У меня ноутбук Wista.

Ранее делал другие вещи по видео уроку. У автора получается.
Делаю всё тоже самое у меня не получается.
Не получается только с php.
Постоянно выдаёт какую-нибудь ошибку. Запарило уже.
Судя по вашей книге Вы профессиональный программист.
Вашу книгу несколько рас прочитал и не могу понять где происходят ошибки.

Может XAMPP нужно установить в другую папку?


ПОМОГИТЕ.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему Ответить на тему    Список форумов dkws.org.ua -> PHP Часовой пояс: GMT
На страницу Пред.  1, 2, 3, 4  След.
Страница 3 из 4
 Главная страница сайта
 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
© Колисниченко Денис