Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запись файла на сервер 
:(
    Опции темы
Pakshin A. S.
Дата 3.7.2005, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



Описываю ситуацию:
Есть страница на которой пользователь выбирает файл для загрузки... его нужно записать с компа на сервер... Как это корректно сделать, чтобы избежать ошибок по совпадению имен файлов?

PM   Вверх
Irokez
Дата 3.7.2005, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


Профиль
Группа: Участник Клуба
Сообщений: 1180
Регистрация: 20.10.2004

Репутация: 22
Всего: 53



tempnam()
PM   Вверх
Mal Hack
Дата 3.7.2005, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



http://php.net/tempnam
Хотя лучше делать делать уникальное имя по microtime.
PM ICQ   Вверх
PARROT
Дата 3.7.2005, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Код

$md5                = md5(microtime());
$file                = "/home/file/www/data/{$md5}.jpg";

smile

Это сообщение отредактировал(а) PARROT - 3.7.2005, 22:40


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Pakshin A. S.
Дата 3.7.2005, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



Цитата(PARROT @ 3.7.2005, 23:39)
Код

1:
2:

$md5                = md5(microtime());
$file                = "/home/file/www/data/{$md5}.jpg";

А как это использовать?

Добавлено @ 22:45
Посмотрел хелп... что-то совсем не прет... smile Может из-за того, что поздно... smile А есть простой пример?
PM   Вверх
PARROT
Дата 3.7.2005, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



1. условие на наличие файла
2. Генерируем имя
3. Пишем путь до места где будут сохраняться файлы.
4. Загружаем файл
5. выводим на печать.

Пример вот, но нет проверок, нужно дописать:
Код


if(isset($_FILES['image'])) {

        $md5                = md5(microtime());
        $bigimg                = "/home/file/www/data/{$md5}_b.jpg";

        move_uploaded_file($_FILES['image']['tmp_name'], $bigimg);
        copy($bigimg);
}
 echo "<img src='data/${md5}_s.jpg'>";


Должно работать. smile

Это сообщение отредактировал(а) PARROT - 3.7.2005, 22:50


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Irokez
Дата 3.7.2005, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


Профиль
Группа: Участник Клуба
Сообщений: 1180
Регистрация: 20.10.2004

Репутация: 22
Всего: 53



Цитата(Pakshin @ 3.7.2005, 22:42)
А есть простой пример?

Код

$unique_name = tempnam('path/to/dir', 'prefix'); //получаем уникальное имя для файла в директорию path/to/dir с префиксом prefix

PM   Вверх
Pakshin A. S.
Дата 3.7.2005, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



smile
Половина дела сделана... теперь как собственно грамотно записать файл... smile smile
PM   Вверх
Mal Hack
Дата 3.7.2005, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



PARROT в твоем примере пусть и небольшая, но есть вероятность повторения имени файла. Самый оптимальный вариант - чистый microtime.

Цитата(Irokez @ 3.7.2005, 23:48)
tempnam

Конечно же хорошо, но может тормозить.
PM ICQ   Вверх
Pakshin A. S.
Дата 3.7.2005, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



Цитата(PARROT @ 3.7.2005, 23:48)
Пример вот, но нет проверок, нужно дописать:

А что именно?
Добавлено @ 22:56
move_uploaded_file($_FILES['image']['tmp_name'], $bigimg);

Можно немного пояснить что есть что?
PM   Вверх
Irokez
Дата 3.7.2005, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


Профиль
Группа: Участник Клуба
Сообщений: 1180
Регистрация: 20.10.2004

Репутация: 22
Всего: 53



Цитата(Pakshin @ 3.7.2005, 22:49)
Половина дела сделана... теперь как собственно грамотно записать файл... smile

Код

$dest_dir = '/куда записываем файл/';
if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
    $file_info = pathinfo($_FILES['userfile']['name']);
    $uname = $dest_dir . basename(tempnam($dest_dir, 'uploaded'), '.tmp') . '.' . $file_info['extension'];
    move_uploaded_file($_FILES['userfile']['tmp_name'], $uname);
};

PM   Вверх
PARROT
Дата 3.7.2005, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Mal Hack
Цитата
вероятность повторения имени файла

Это всего лишь рабочий пример. Имя для загруженного файла - номер объявления. Тут совпадений быть не может, потому как номер объявления автоинкремент.
Проверки: (Поищи в поиске,если нужно)
1. На размер загружаемого файла, его можно ограничить.
2. На расширение файла.
У меня их нет, точнее я не проверяю. У меня любой файл возвращается *.jpg


Добавлено @ 23:03
Цитата

move_uploaded_file($_FILES['image']['tmp_name'], $bigimg);
Можно немного пояснить что есть что?

Почитать тут:
http://ru2.php.net/move_uploaded_file
Если кратко, то:
move_uploaded_file -- Перемещает загруженный файл в новое место

Это сообщение отредактировал(а) PARROT - 3.7.2005, 23:04


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Pakshin A. S.
Дата 3.7.2005, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



Цитата(Irokez @ 4.7.2005, 00:00)
]['name']);

что туде писать иенно?

Можно с каким-нить конкретным именем...

Цитата(PARROT @ 4.7.2005, 00:01)
Почитать тут:
http://ru2.php.net/move_uploaded_file

Ух... интересно щас почитаю...
PM   Вверх
Mal Hack
Дата 3.7.2005, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(PARROT @ 4.7.2005, 00:01)
Это всего лишь рабочий пример. Имя для загруженного файла - номер объявления. Тут совпадений быть не может, потому как номер объявления автоинкремент.

В твоем случае - хэш smile Теоретически повторение быть может smile
PM ICQ   Вверх
PARROT
Дата 3.7.2005, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Цитата

что туде писать иенно?

Ничего писать не нужно сюда.
Путь до папки написать свой, если надо создать папку, где файлы лежат.
Все уже написано. Просто вставить в форму.
Код

<tr>
<td align=center>Фото:</td>
<td align=center><input type=file name=image class=inp  style=cursor:hand></td>
</tr>

Добавлено @ 23:12
В моем случае это выглядит вот так:
$idn это номер объявы, который не повторяется.
Код

if (isset($_FILES['image'])) {
                    $bigimg                = "/home/avtodiesel/www/foto/".$idn.".jpg";



--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1617 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.