Forum Webscript.Ru

Программирование => PHP => Тема начата: stanlee от 14 Января 2004, 16:21:53

Название: Есть вопросик !
Отправлено: stanlee от 14 Января 2004, 16:21:53
Подсажите плз.
Допустим у нас есть форма для загрузки на сайт блякого барахла
Меня интересует как сделать так, чтобы при загрузке каждому файлу при загрузке можно было писваивать порядковый номер не зависимо от расширения????
Название: Есть вопросик !
Отправлено: Diesel от 14 Января 2004, 17:38:05
заведи счетчик в базе. При загрузке очередного файла увеличивай его на единицу.
Название: Есть вопросик !
Отправлено: Croaker от 14 Января 2004, 18:35:32
или считай файлы в каталоге.
Название: Есть вопросик !
Отправлено: Diesel от 14 Января 2004, 19:18:10
Croaker А если несколько файлов удалить?
Название: Есть вопросик !
Отправлено: Yukko от 15 Января 2004, 00:59:41
stanlee
Можешь объяснить зачем тебе это надо???

чтобы узнать сколько у тебя в папке файлов, не надо им присваивать номера.

Что ты подразумеваешь под порядковым номером файла вообще?
[off]файлы, становись, на первый-второй расчитайсь!
первый...
второй...
...
n-ндацать третий, расчет окончен[/off]

что делать с номерами файлов после 3-го, если удалили файл с порядковым номером 3?

можно ли менять имена файлов? т.е. был somefile.gif стал 21341.gif

расширение желательно проверять и иметь список разрешенных для закачки типов файлов

Diesel
ну и что? автор топика поставил задачу неоднозначно, как хочешь, так и понимай.
Название: Есть вопросик !
Отправлено: Diesel от 15 Января 2004, 01:53:10
Yukko какая разница зачем ему это надо, сказано "порядковый", значит попорядку. от 1 до n. Кстати если порядок не важен, нужна только уникальность, то можно использовать time(), но при этом  гепотетически возможна ситуация когда 2 файла попытаются сохраниться с одинаковыми номерами, все равно придется использовать какой-то флаг, чтоб разные копии скрипта знали что идет сохранение файла.

>расширение желательно проверять и иметь список разрешенных для закачки типов файлов

В этом смысла я вообще не вижу, во-первых потому что автор топика не указал что нужена такая проверка нужна, во-вторых что будет если я поменяю расширение?
Название: Есть вопросик !
Отправлено: Neter от 15 Января 2004, 11:00:55
stanlee Слушай сюда.
Короче если ты делаешь каталог файлов заведи таблицу файлов, со структурой типа: id, ext, description.

Как выковырить расширение(ext)?

Грубый способ(только если для себя делаешь)
$ext = substr(strrchr($filename, "."), 1);

Более правильный способ:
Проверять mime тип файла. if($_FILES[\'userfile\'][\'type\'] == "image/gif") ..

А если вруг подумаешь "а может без БД", спрошу: а как ты их различать-то будешь?
Название: Есть вопросик !
Отправлено: Croaker от 15 Января 2004, 11:14:10
Diesel

Цитировать
А если несколько файлов удалить?


ну и что? а если из базы запись удалить? Ты все синхронизировать будешь, чтоль?
Название: Есть вопросик !
Отправлено: Yukko от 15 Января 2004, 11:47:27
Цитировать
Diesel:
какая разница зачем ему это надо

Большая.
Расчитывать по порядку номеров свои файлы — такой же бред, как проводить "дефрагментацию" id\'ов в базе данных, чтобы они шли по порядку, если же ему надо просто посчитать их, то я это сделаю без базы данных.
Название: Есть вопросик !
Отправлено: stanlee от 15 Января 2004, 12:39:26
А как узнать тип файла уже загруженный на сервер?
Название: Есть вопросик !
Отправлено: Diesel от 15 Января 2004, 12:50:01
Croaker Если удалить один файл то, если следовать твоему рецепту, имя следующего файла будет таким же как имя последнего сохраненного. Я не говорил хранить ссылки на файлы а всего лишь счетчик, который только увеличивается, но некогда не уменьшается.

Yukko Естественно если при этом удалить файл то они не будут уже идти по порядку, но я нигде не советовал проводить "дефрагментацию". Я предложил 2 способа как обеспечить уникальность имен файлов, потому что думаю, что другого смысла их переименовывать нет. А мысль о том, что нумеровать файлы требуется для того, чтобы посчитать их количество, мне даже в голову прийти не могла....
Название: Есть вопросик !
Отправлено: stanlee от 15 Января 2004, 12:52:13
Цитировать
А как узнать тип файла уже загруженный на сервер?


???
Название: Есть вопросик !
Отправлено: Diesel от 15 Января 2004, 12:56:53
stanlee
http://ru.php.net/manual/ru/function.mime-content-type.php
Название: Есть вопросик !
Отправлено: Croaker от 15 Января 2004, 13:01:40
Цитировать
Diesel:
Croaker Если удалить один файл то, если следовать твоему рецепту, имя следующего файла будет таким же как имя последнего сохраненного. Я не говорил хранить ссылки на файлы а всего лишь счетчик, который только увеличивается, но некогда не уменьшается.


Естествнно нужно проверить перед копированием нового файла - есть ли уже файл с таким именем. Если есть, счетчик увеличиваем на 1;


while(is_file($count.".".img_type)) {
  $count++;
}

// создаем\\копируем файл


Название: Есть вопросик !
Отправлено: stanlee от 15 Января 2004, 13:25:39
а можно ли так
загружаем файл к примеру 1.doc
делаем ссылку на него
но надо чтоб по ссылке выдавался архив с этим файлом, например, zip
но на сервере не лежит zip файл а архивируется прямо в момент нажатия на сылку
Название: Есть вопросик !
Отправлено: Yukko от 15 Января 2004, 13:28:07
Diesel
Где ты видишь, что в задании написано, что надо давать новые имена файлам? О какой уникальности имен идет речь?
Посмотри какой я задал вопрос stanlee
Цитировать
Yukko:
можно ли менять имена файлов? т.е. был somefile.gif стал 21341.gif


а вообще автора топика этот вопрос уже не волнует, ИМХО, так как он уже задает другие, и можно перестать ломать копья по всем поднятым вопросам.
Название: Есть вопросик !
Отправлено: stanlee от 15 Января 2004, 13:29:03
:)

Цитировать
а можно ли так
загружаем файл к примеру 1.doc
делаем ссылку на него
но надо чтоб по ссылке выдавался архив с этим файлом, например, zip
но на сервере не лежит zip файл а архивируется прямо в момент нажатия на сылку


???
Название: Есть вопросик !
Отправлено: Yukko от 15 Января 2004, 13:32:48
Цитировать
stanlee:
но надо чтоб по ссылке выдавался архив с этим файлом, например, zip

http://phpclub.ru/talk/search.php?s=&action=showresults&searchid=170018&sortby=after&sortorder=descending
а еще, если под виндами, то вообще не париться и сделать с коммандной строки.

Зиповать надо один раз, а не напрягать сервер, чтобы он каждый раз делал одно и то же при нажатии на ссылку.
Название: Есть вопросик !
Отправлено: Yukko от 15 Января 2004, 13:37:07
Цитировать
stanlee:
???

может, ты прекратишь делать такие посты? никто не обязан тебе отвечать моментально. Если ты задал вопрос, то его прочитает не один человек, кто сможет, тот ответит.

А вообще научись пользоваться поиском и кури маны, а не бегай по каждой проблеме на форум. Этот топик тоже можно было бы давно разделить на три. Не надо смешивать обсуждения разных вещей в одном. Люди потом по форуму поиск делают.
Название: Есть вопросик !
Отправлено: Diesel от 15 Января 2004, 13:42:16
stanlee Проще архивировать при загрузке.
http://ru2.php.net/manual/ru/ref.zlib.php
Название: Есть вопросик !
Отправлено: stanlee от 15 Января 2004, 13:53:45
я постю потому что когда я задаю новый вопрос то после него уже кто то кидает сообщения со старых вопросов и мой вопрос уже не последним стоит
ну вот типо а то не заметят
Название: Есть вопросик !
Отправлено: Yukko от 15 Января 2004, 14:01:33
stanlee
не боись заметят! тут не УТОС.
Название: Есть вопросик !
Отправлено: Макс от 15 Января 2004, 14:04:53
stanlee
http://www.phpconcept.net/pclzip/index.en.php
Название: Есть вопросик !
Отправлено: stanlee от 15 Января 2004, 14:12:52
а что такое УТОС?
Название: Есть вопросик !
Отправлено: Yukko от 15 Января 2004, 14:43:23
Цитировать
stanlee:
а что такое УТОС?

http://utos.gorodok.info/index.html
Название: Есть вопросик !
Отправлено: FreeSpace от 15 Января 2004, 19:45:29
[OFF]
Цитировать
Yukko:
http://utos.gorodok.info/index.html

Жестоко :([/OFF]
Название: Есть вопросик !
Отправлено: ThE0ReTiC от 15 Января 2004, 19:59:32
[moderator]
2 All
Флейм заканчиваем
[/moderator]
Название: Есть вопросик !
Отправлено: stanlee от 16 Января 2004, 16:25:01
бе бе бе
Название: Есть вопросик !
Отправлено: ThE0ReTiC от 16 Января 2004, 16:32:16
stanlee
[off]
медаль
[/off]
Название: Есть вопросик !
Отправлено: Mog. от 17 Января 2004, 07:58:27
Цитировать
stanlee:
загружаем файл к примеру 1.doc

Цитировать
stanlee:
но надо чтоб по ссылке выдавался архив с этим файлом, например, zip

Цитировать
Diesel:
архивировать при загрузке

Проще вообще перед загрузкой архивировать, если цель - отдавать зип файл
Название: Есть вопросик !
Отправлено: Neter от 17 Января 2004, 15:41:54
Так дети, рассказываю как правильно: :)

В форме загрузки ставим галочку, "Архивировать"
А в скрипте закачки файла смотрим если архив, или галочка снята то закачиваем как есть, иначе - архивируем.