Forum Webscript.Ru
Программирование => PHP => Тема начата: stanlee от 14 Января 2004, 16:21:53
-
Подсажите плз.
Допустим у нас есть форма для загрузки на сайт блякого барахла
Меня интересует как сделать так, чтобы при загрузке каждому файлу при загрузке можно было писваивать порядковый номер не зависимо от расширения????
-
заведи счетчик в базе. При загрузке очередного файла увеличивай его на единицу.
-
или считай файлы в каталоге.
-
Croaker А если несколько файлов удалить?
-
stanlee
Можешь объяснить зачем тебе это надо???
чтобы узнать сколько у тебя в папке файлов, не надо им присваивать номера.
Что ты подразумеваешь под порядковым номером файла вообще?
[off]файлы, становись, на первый-второй расчитайсь!
первый...
второй...
...
n-ндацать третий, расчет окончен[/off]
что делать с номерами файлов после 3-го, если удалили файл с порядковым номером 3?
можно ли менять имена файлов? т.е. был somefile.gif стал 21341.gif
расширение желательно проверять и иметь список разрешенных для закачки типов файлов
Diesel
ну и что? автор топика поставил задачу неоднозначно, как хочешь, так и понимай.
-
Yukko какая разница зачем ему это надо, сказано "порядковый", значит попорядку. от 1 до n. Кстати если порядок не важен, нужна только уникальность, то можно использовать time(), но при этом гепотетически возможна ситуация когда 2 файла попытаются сохраниться с одинаковыми номерами, все равно придется использовать какой-то флаг, чтоб разные копии скрипта знали что идет сохранение файла.
>расширение желательно проверять и иметь список разрешенных для закачки типов файлов
В этом смысла я вообще не вижу, во-первых потому что автор топика не указал что нужена такая проверка нужна, во-вторых что будет если я поменяю расширение?
-
stanlee Слушай сюда.
Короче если ты делаешь каталог файлов заведи таблицу файлов, со структурой типа: id, ext, description.
Как выковырить расширение(ext)?
Грубый способ(только если для себя делаешь)
$ext = substr(strrchr($filename, "."), 1);
Более правильный способ:
Проверять mime тип файла. if($_FILES[\'userfile\'][\'type\'] == "image/gif") ..
А если вруг подумаешь "а может без БД", спрошу: а как ты их различать-то будешь?
-
Diesel
А если несколько файлов удалить?
ну и что? а если из базы запись удалить? Ты все синхронизировать будешь, чтоль?
-
Diesel:
какая разница зачем ему это надо
Большая.
Расчитывать по порядку номеров свои файлы — такой же бред, как проводить "дефрагментацию" id\'ов в базе данных, чтобы они шли по порядку, если же ему надо просто посчитать их, то я это сделаю без базы данных.
-
А как узнать тип файла уже загруженный на сервер?
-
Croaker Если удалить один файл то, если следовать твоему рецепту, имя следующего файла будет таким же как имя последнего сохраненного. Я не говорил хранить ссылки на файлы а всего лишь счетчик, который только увеличивается, но некогда не уменьшается.
Yukko Естественно если при этом удалить файл то они не будут уже идти по порядку, но я нигде не советовал проводить "дефрагментацию". Я предложил 2 способа как обеспечить уникальность имен файлов, потому что думаю, что другого смысла их переименовывать нет. А мысль о том, что нумеровать файлы требуется для того, чтобы посчитать их количество, мне даже в голову прийти не могла....
-
А как узнать тип файла уже загруженный на сервер?
???
-
stanlee
http://ru.php.net/manual/ru/function.mime-content-type.php
-
Diesel:
Croaker Если удалить один файл то, если следовать твоему рецепту, имя следующего файла будет таким же как имя последнего сохраненного. Я не говорил хранить ссылки на файлы а всего лишь счетчик, который только увеличивается, но некогда не уменьшается.
Естествнно нужно проверить перед копированием нового файла - есть ли уже файл с таким именем. Если есть, счетчик увеличиваем на 1;
while(is_file($count.".".img_type)) {
$count++;
}
// создаем\\копируем файл
-
а можно ли так
загружаем файл к примеру 1.doc
делаем ссылку на него
но надо чтоб по ссылке выдавался архив с этим файлом, например, zip
но на сервере не лежит zip файл а архивируется прямо в момент нажатия на сылку
-
Diesel
Где ты видишь, что в задании написано, что надо давать новые имена файлам? О какой уникальности имен идет речь?
Посмотри какой я задал вопрос stanlee
Yukko:
можно ли менять имена файлов? т.е. был somefile.gif стал 21341.gif
а вообще автора топика этот вопрос уже не волнует, ИМХО, так как он уже задает другие, и можно перестать ломать копья по всем поднятым вопросам.
-
:)
а можно ли так
загружаем файл к примеру 1.doc
делаем ссылку на него
но надо чтоб по ссылке выдавался архив с этим файлом, например, zip
но на сервере не лежит zip файл а архивируется прямо в момент нажатия на сылку
???
-
stanlee:
но надо чтоб по ссылке выдавался архив с этим файлом, например, zip
http://phpclub.ru/talk/search.php?s=&action=showresults&searchid=170018&sortby=after&sortorder=descending
а еще, если под виндами, то вообще не париться и сделать с коммандной строки.
Зиповать надо один раз, а не напрягать сервер, чтобы он каждый раз делал одно и то же при нажатии на ссылку.
-
stanlee:
???
может, ты прекратишь делать такие посты? никто не обязан тебе отвечать моментально. Если ты задал вопрос, то его прочитает не один человек, кто сможет, тот ответит.
А вообще научись пользоваться поиском и кури маны, а не бегай по каждой проблеме на форум. Этот топик тоже можно было бы давно разделить на три. Не надо смешивать обсуждения разных вещей в одном. Люди потом по форуму поиск делают.
-
stanlee Проще архивировать при загрузке.
http://ru2.php.net/manual/ru/ref.zlib.php
-
я постю потому что когда я задаю новый вопрос то после него уже кто то кидает сообщения со старых вопросов и мой вопрос уже не последним стоит
ну вот типо а то не заметят
-
stanlee
не боись заметят! тут не УТОС.
-
stanlee
http://www.phpconcept.net/pclzip/index.en.php
-
а что такое УТОС?
-
stanlee:
а что такое УТОС?
http://utos.gorodok.info/index.html
-
[OFF]
Yukko:
http://utos.gorodok.info/index.html
Жестоко :([/OFF]
-
[moderator]
2 All
Флейм заканчиваем
[/moderator]
-
бе бе бе
-
stanlee
[off]
медаль
[/off]
-
stanlee:
загружаем файл к примеру 1.doc
stanlee:
но надо чтоб по ссылке выдавался архив с этим файлом, например, zip
Diesel:
архивировать при загрузке
Проще вообще перед загрузкой архивировать, если цель - отдавать зип файл
-
Так дети, рассказываю как правильно: :)
В форме загрузки ставим галочку, "Архивировать"
А в скрипте закачки файла смотрим если архив, или галочка снята то закачиваем как есть, иначе - архивируем.