|
|
|
| Я думал точто вот так:
if(!empty($_FILE["foto1"]))
Но чота не получаеца | |
|
|
|
|
|
|
|
для: Адоп Акробат
(08.01.2005 в 04:17)
| | Хм... а $_FILE - это опечатка? Нужно $_FILES... Дело в том, что массив $_FILES - это двумерный массив и для того, чтобы узнать пришло ли изображение на сервер следует проверить либо поле $_FILES["foto1"]['tmp_name'] в котором хранится имя временного файла, куда сервер поместил файл закаченный от клиента либо поле $_FILES["foto1"]['name'] - где хранится имя исходного файла, т.е. так как он назывался на машине клиента. Ещё в PHP имеется специальная функция is_uploaded_file(), которая проверяет загрузился файл на сервер или нет
<?php
if(is_uploaded_file($_FILES["foto1"]['name']))
{
echo "Ну слава богу...";
}
else
{
echo "Блин, это куда это файлы деваются :(((";
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(08.01.2005 в 13:02)
| | Мне нужно узнать точто есть чтолибо в поле $_FILES
Точто он не пуст | |
|
|
|
|
|
|
|
для: Адоп Акробат
(08.01.2005 в 13:30)
| | Но ведь $_FILES - это массив и следует проверять значения его полей, т.е. либо $_FILES['foto1']['tmp_name'], либо $_FILES['foto1']['name']. Для отлдки может быть удобно вывести всё содержимое данного массива при помощи функции print_r():
<?php
pritn_r($_FILES);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(08.01.2005 в 13:53)
| | Нет, вот смотрите, у меня есть восемь полей
<input type='file' name='foto1' class='submit' size='5'>
И как мне узнать то, что содержит ли это поле что небуть?
а если оно пустое, то я его просто проигнорирую
вот поле <input type='text' name='tex' class='submit' size='5'>
я проверяю вот так
if(!empty($_REQUEST[text]))
А как мне сделать это с файлом? | |
|
|
|
|
|
|
|
для: Адоп Акробат
(08.01.2005 в 17:21)
| | if(!empty($_FILES['foto1']['name'])) | |
|
|
|
|
|
|
|
для: cheops
(08.01.2005 в 18:11)
| | Спасиба :)
чета я ваще :( | |
|
|
|
|
|
|
|
для: Адоп Акробат
(08.01.2005 в 18:24)
| | Хеопс, а если произошла ошибка с загрузкой фотографии, как узнать что за ошибка.
И допустим, я загружаю фотографию, а фотография с таким именем уже существует | |
|
|
|
|
|
|
|
для: Адоп Акробат
(08.01.2005 в 18:34)
| | Дело в том, что файлы сначала помещаются во временную директорию на сервере с уникальным именем, которое можно узнать из элемента суперглобального массива $_FILES['foto1']['tmp_name']. Т.е. сам Web-сервер никогда ничего не затрёт. После того, как файлы загружены можно копировать их из временной директори в директорию назначения при помощи функции copy():
<?php
if (copy($_FILES['attach']['tmp_name'], $path))
{
// Уничтожаем файл во временной директории
unlink($_FILES['attach']['tmp_name']);
// Изменяем права доступа к файлу
chmod($path, 0644);
}
?>
|
где $path - путь к файлу куда следует поместить файл. Если такой файл уже существует он будет перезаписан - это нужно проверять самостоятельно. Я обычно, если файлы хранятся во одной директории изменяю имя файла на уникальное - например текущее время
<?php
// Извлекаем из имени файла расширение
$ext = strrchr($_FILES['attach']['name'], ".");
// Формируем путь к файлу
$path="files/$id_theme-".date("YmdHis",time()).$ext;
?>
|
Но это и по форуму видно, здесь имена файлов и фотографий имеют дикие имена вроде 1024-20041208093003.txt | |
|
|
|
|
|
|
|
для: cheops
(08.01.2005 в 18:44)
| | А в этом фрагменте кода
<?php
// Извлекаем из имени файла расширение
$ext = strrchr($_FILES['attach']['name'], ".");
// Формируем путь к файлу
$path="files/$id_theme-".date("YmdHis",time()).$ext;
?>
|
что такое $id_theme- ??
А и как зделать чтобы название было покароче? | |
|
|
|
|
|
|
|
для: Адоп Акробат
(08.01.2005 в 19:07)
| | А это я просто передрал с форума - это номер темы (например для этой это 1428) - можно убрать, кроме того можно наверное убрать год (литера Y в строке форматирования функции date) - это укоротит имя на 4 символа, а вообще можно и месяц наверное убрать, кроме этого это не единственный способ генерации уникальных имён, но зато благодаря ему у вас точно не упрут автоматически картинки, так как сгенерировать имена не получится... | |
|
|
|
|
|
|
|
для: Адоп Акробат
(08.01.2005 в 19:07)
| | >что такое $id_theme- ??
Это, видимо, случайно попало.
Имя файла Вы можете генерировать как хотите:
date("YmdHis",time()).$ext;
|
Эта строка генерирует имя файла состоящее из года, месяца, дня, часа, минут и секунд. Длинно – зато гарантирует уникальность названий файлов. Хотя, может быть Вам и не нужны уникальные имена? Тогда подставьте в эту строку что то свое. | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(08.01.2005 в 20:16)
| | Не мне кажеца этот способ неполучица потомучто у меня в одно и тоже време записываюца восемь файлов.
Какой лучьше способ использовать? | |
|
|
|
|
|
|
|
для: Адоп Акробат
(08.01.2005 в 20:48)
| | А и смотрите я нашол в мануале такую функцию move_uploaded_file мне кажеца точто она лутше чем copy
А вы как думаете? | |
|
|
|
|
|
|
|
для: Адоп Акробат
(08.01.2005 в 20:54)
| | Чёрт его знает... в мануале написано, что при использовании этой функции могут быть проблемы с при включенном безопасном режиме, который везде и включён... но написано так коряво, что я не могу понять что за проблемы могут возникнуть :((( | |
|
|
|
|
|
|
|
для: cheops
(08.01.2005 в 21:32)
| | Ну кагда загружу тогда и посмотрю :)
Ну так а че делать с именем? | |
|
|
|
|
|
|
|
для: Адоп Акробат
(08.01.2005 в 21:33)
| | Дело в том что файлы мне могут загружаться одновременно =)
Несколько секунд все равно разные.
Да и имя можно генерировать случайными числами =)
По моему есть функция генерирования temp имен....
Почему бы ее не использовать? | |
|
|
|
|
|
|
|
для: Akira
(08.01.2005 в 21:49)
| | Мне просто не хочица делать страшные именна. | |
|
|
|
|
|
|
|
для: Адоп Акробат
(08.01.2005 в 22:01)
| | Проблем нет =) Создовай тогда папки по дате =) Много папок зато шанс перезаписи файла минимален.
Я поступил так.
У меня пользователь загружает midi файл на сайт.
Я его заношу в бд.
Если он совпадает по всем параметрам то отклоняеться и не копируеться.
Если совпадает по имени то просто добавляю что-то к этому файлу.
Вообщем занося о файлах информацию в бд делает все проше.
Главное сначало запросы в бд а потом уже работа с файлом. | |
|
|
|
|
|
|
|
для: Akira
(08.01.2005 в 22:51)
| | Фух с именем разобрался :)
Я сделал так:
беру из базы id прибавляю один и все :)
А когда копируешь файл из временной папки в обычную нужно указывать полный путь ?
или нет?
как правильно так
move_uploaded_file($_FILES["foto1"]["tmp_name"],"photos/" . $name);
или так
move_uploaded_file($_FILES["foto1"]["tmp_name"],"C:\Documents and Settings\Адоп Акробат\Рабочий стол\php/photos/" . $name); | |
|
|
|
|
|
|
|
для: Адоп Акробат
(09.01.2005 в 02:57)
| | Можно указывать и полный путь и относительный - лучше относительный - код будет переносимый... | |
|
|
|