Загрузка файла

SaintSatan

Новичок
Загрузка файла

Здравствуйте.
Подскажите кто может.
Хочу сделать следующее:

Кликаю по ссылке, чтобы скачать с сервера файл. <a href="download.php?file=filename"> filename </a>
В файле download.php сначала идет код счетчика скачиваний (он сделан и без проблем работает), а потом начинается загрузка требуемого файла, причем открытая страница с сылкой остается на месте не перезагружаясь (так везде делается), сразу появляется окошко с предложениями открыть или сохранить на диске файл.
Как это сделать? Поидее код должен быть простым, но у меня чего-то не получается и в инете искать замучился.

Причем повторюсь, не росто скачать, но и запись счетчика в базе надо сделать и все это одним кликом.

Заранее спасибо.
 

tf

крылья рулят
посмотри на javascript код, он тебе много чего скажет
 

SaintSatan

Новичок
не java не то
если php открыть в этом же окне, то страница перезагрузится, если в другом, то это будет уже всплывающее окно, а некоторые пользватель запрещают это.

Я нашел как надо:
посредством команды php header();
и счетчик сработает и страница не перезагрузится и окно с предложением загрузки файла выскочит.

-~{}~ 30.12.06 17:37:

Не, JS всетаки может

function _load(file)
{d.location.href="load.php?file="+file;
setTimeout(d.location.href=file, 100);
}

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

SaintSatan

Новичок
boombick
:) Ну, вообщето я им занимаюсь. Только времени мало.

А что не так то?
 

jonjonson

Охренеть
SaintSatan в <a href="download.php?file=filename"> добавить атрибут <a href="download.php?file=filename" target="new_window">. Тогда страница ссылкой не перезагрузиться. Вот только счетчик на ней так же не обновиться.
 

SaNeK

Новичок
SaintSatan
И запомни одну важную вещь: JAVASCRIPT != JAVA - НИКОГДА!
 

SaintSatan

Новичок
jonjonson
Да я так и делал сначала. Но потом некоторые стали жаловаться на то, что открывающееся окно new_wndow сразу закрывается, поэтому хотел без этого сделать. И это легко делается через php, но как не знал. И никто не мог дать мне нормального ответа.
В итоге сам допер. Ссылка просто идет на файл php с параметром file, а там после счетчика всего одна строчка header("Location: $folder/$file");
И все!

SaNeK
Знаю, спешил просто.
 

SaintSatan

Новичок
HraKK
Я же уже написал. Что header("Location: $folder/$file");
Хотя в manual'e под загрузку файлов приводят другой вариант. Но, работает именно этот. Тот который рекомендуют походу только для pdf.

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

SaintSatan

Новичок
HraKK
Что значит отдаешь?
Не это имеешь в виду:
header("Content-Disposition: attachment; filename=file.dat");
header("Content-Type: application/x-force-download; name=\"file.dat\"");
?
 

SaintSatan

Новичок
HraKK
Знаешь, чисто практически, что этот вариант, что редирект результат дают один в один, ни какой разницы.
Но, вот этот вариант у меня почему-то не работает. внешне выглядет как-будто работает, а на деле получается, что он просто создает в указанном месте файл с указанным именем нулевого размера. Почему так происходит фиг знает.
Поэтому взял редирект.
 

Фанат

oncle terrible
Команда форума
сессии

-~{}~ 03.01.07 17:46:

В любом случае, вариант с редиректом надёжнее и в сто раз экономичнее по производительности.
Так что, если нет нужды скрывать реальное расположение файла, то редирект - отличное решение.

Впрочем, в этом случае проще ставить прямую ссылку, а в базу писать, анализируя логи.
 

SaintSatan

Новичок
SiMM
интересная статейка ...
короче, чем бороться с этим кэшированием проще редирект.
 
Сверху