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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Загрузка файла не сервер, Как переименовать полученный файл? 
:(
    Опции темы
tilekus
Дата 31.5.2009, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Нужно загрузить файл на сервер. Но переименовать его, например текущей датой, чтобы названия всех файлов были уникальными. Я заранее не знаю какой тип фалов будет загружаться, т.е. я не могу сказать что пользователи будут закачивать только вордовские файлы или рисунки.
Сам принцип организации закачки файла я знаю. Но вот как пееименовть  :( 
Вот сама форма для закачки
Код
<form action="uploader.php" method="post" enctype="multipart/form-data">
      <input type="file" name="filename"><br>
      <input type="text" name="nazvanie"><br> 
      <input type="submit" value="Загрузить"><br>
      </form>


А это обрабатывающий скрипт
Код
<?php
   if(copy($_FILES["filename"]["tmp_name"], "../uploads/".$_FILES["filename"]["name"]))
   {
     echo("Файл успешно загружен <br>");
   } else {
     echo("Ошибка загрузки файла");
   }
?>


Подскажите что мне нужно переделать.
PM MAIL   Вверх
Shark
Дата 31.5.2009, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

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



вот как у меня сделано:
Код

            $image = time().$type;

            if(!move_uploaded_file($_FILES['av']['tmp_name'] ,getcwd().'/avater/'.$image))


в переменной $image храниится название файла, time() - время в UNIX формате, переменная $type хранит расширение файла


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
pizzz
Дата 31.5.2009, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 238
Регистрация: 14.12.2008
Где: Омск

Репутация: 6
Всего: 8



Как минимум надо проверять тип файла. Иначе не избежать проблем
--------------------
Спасибо много, жмем кнопку репутация.  Извините меня за орфографические ошибки, я стараюсь не ошибаться, а они все равно просачиваются гады.     
PM MAIL ICQ   Вверх
Serkys
Дата 31.5.2009, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1061
Регистрация: 19.4.2004

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



На хабрахабре хорошо рассказано про безопасность, рекомендую почитать.
А файл переименовывается функцией rename().
PM MAIL   Вверх
pizzz
Дата 31.5.2009, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 238
Регистрация: 14.12.2008
Где: Омск

Репутация: 6
Всего: 8



rename лишнее. При сохранении указываем название
--------------------
Спасибо много, жмем кнопку репутация.  Извините меня за орфографические ошибки, я стараюсь не ошибаться, а они все равно просачиваются гады.     
PM MAIL ICQ   Вверх
tilekus
Дата 31.5.2009, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Тогда такой вопрос, как узнать расширение передаваемого файла?
PM MAIL   Вверх
bars80080
Дата 31.5.2009, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(tilekus @  31.5.2009,  14:26 Найти цитируемый пост)
Тогда такой вопрос, как узнать расширение передаваемого файла? 

$_FILES[av]['type']
PM MAIL WWW   Вверх
NetJunky
  Дата 31.5.2009, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 11.5.2008
Где: Tallinn

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



Или с помощью какого-нибудь регулярного выражения(если таковое есть) указать каких типов файлов не должно быть загружено.


--------------------
Sleep, those little slices of death; Oh how I loathe them. © Edgar Allan Poe
Таллиннцы http://vingrad.ru/groups.php?action=group_...mp;group_id=139

Для записи данных объёмом 1 Терабайт на бумагу, нужно срубить 50000 деревьев.
PM MAIL WWW ICQ Skype MSN   Вверх
tilekus
Дата 31.5.2009, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Как вы думаете правильно ли будет если яделаю таким образом:
1. загружу как есть на сервер
2. с помощью basename вытащу название файла с раширением
3. отсеку от строки все кроме четырех последних символов
4. дам файлу новое название и старое расширение которое получил п.3
4. закинуть в бд

Да и кто знает есть ли список может быть всех MIME типов может самых популярных

Это сообщение отредактировал(а) tilekus - 31.5.2009, 15:09
PM MAIL   Вверх
bars80080
Дата 31.5.2009, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(tilekus @  31.5.2009,  15:07 Найти цитируемый пост)
отсеку от строки все кроме четырех последних символов

почему четыре? а .jpeg, .torrent, .js, .mpg4, .gz ?

зачем, если тип уже выделен?


Цитата(tilekus @  31.5.2009,  15:07 Найти цитируемый пост)
Да и кто знает есть ли список может быть всех MIME типов может самых популярных

гиблое дело, настолько не стандартизированное, что даже смысла нет пользоваться:
http://filext.com/
http://filext.com/file-extension/jpg
там 9 мим-типов на один только .jpg
PM MAIL WWW   Вверх
tilekus
Дата 31.5.2009, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

$_FILES[av]['type'] 

ничего не выводит
Как быть?

Это сообщение отредактировал(а) tilekus - 31.5.2009, 16:01
PM MAIL   Вверх
ksnk
Дата 31.5.2009, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



bars80080, Дело не такое гиблое, если доверить его встроенным функциям mime_content_type или fileinfo. Правда нужно проверить, что соответствующие расширения на сервере есть. Впрочем, они почти стандартны.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
supervladislav
Дата 31.5.2009, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: -8
Всего: -9



тебе какого типа файлы загружать надо ))
PM MAIL   Вверх
bars80080
Дата 31.5.2009, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(ksnk @  31.5.2009,  16:01 Найти цитируемый пост)
Правда нужно проверить, что соответствующие расширения на сервере есть. Впрочем, они почти стандартны. 

как ни странно, в единственном варианте, когда они мне понадобились, на сервере их не оказалось
PM MAIL WWW   Вверх
Photon
Дата 31.5.2009, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Злобный программер
**


Профиль
Группа: Участник
Сообщений: 282
Регистрация: 27.2.2009
Где: Таганрог

Репутация: 10
Всего: 12



Ну нахрена так себя мучать?

Код

  $arr = explode('.', $_FILES['filename']['name'];
  $ext = $arr[count($arr) - 1];
  $new_name = time().$ext;
   move_uploaded_file($_FILES['filename']['tmp_name'], 'путь_для_сохранения/'.$new_name);




--------------------
With best regards..
PM MAIL ICQ Skype GTalk Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

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

Важно:

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

Внимание:

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

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

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


 




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


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

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