|
Страница 1 из 1 [ Сообщений: 18 ] |
Автор |
Сообщение |
Amiddio1
новый человек
|
|
Привет!
Задача такова:
есть картинка и под ней ссылка "Download". При нажатии на нее должно открыться окно для сохранения файла на жесткий диск, а не открытия самой картинки в браузере.
Как решить такую задачу?
|
|
 |
|
 |
mnemonic
новый человек
|
|
Решение в лоб - зиповать и отдавать zip.
|
|
 |
|
 |
Amiddio1
новый человек
|
|
Об этом я думал, но не подходит...
Знатоки JavaScript! Может можно как то вызвать окно для сохранения. Есть же функция print();
|
|
 |
|
 |
mnemonic
новый человек
|
|
Amiddio1 писал(а): | Об этом я думал, но не подходит... Знатоки JavaScript! Может можно как то вызвать окно для сохранения. Есть же функция print(); |
Причем здесь print()? Еще есть alert() - она тоже диалоговое окошко открывает  Но это не повод ее здесь упоминать.
Браузер в большинстве случаев сам решает, что делать с файлом заданного MIME типа. А отдавать с другим MIME - глупо.
|
|
 |
|
 |
Бaзиль
участник
|
|
как-то это реализовано на mail.ru...
_________________ Не кочегары мы, не плотники,
Но сожалений горьких нет -
Как нет?
А мы дизайнеры-художники,
И с высоты вам шлем привет -
Привет!
|
|
 |
|
 |
Amiddio1
новый человек
|
|
… где именно? Я посмотрю...
|
|
 |
|
 |
Long
SubAdmin Теоретик
|
|
средствами JavaScript это не реализуется.
_________________ Мудрость не всегда приходит с возрастом. Бывает, что возраст приходит один.
|
|
 |
|
 |
Amiddio1
новый человек
|
|
Спасибо... тогда придется архивировать
|
|
 |
|
 |
Бaзиль
участник
|
|
нашел.
Код: <?php $name="kartinka.jpg"; header("Content-Type: application/force-download\r\n"); header("Content-Transfer-Encoding: binary\r\n"); header("Content-Length: ".filesize($name)); header("Content-Disposition: attachment; filename=$name\r\n"); readfile("$name"); ?>
_________________ Не кочегары мы, не плотники,
Но сожалений горьких нет -
Как нет?
А мы дизайнеры-художники,
И с высоты вам шлем привет -
Привет!
|
|
 |
|
 |
Бaзиль
участник
|
|
НО!!! В начале файла не должно быть никаких пустых строк, а тем более никаких print'ов и echo'в!! Инача тип заголовока укажется автоматически как http!
_________________ Не кочегары мы, не плотники,
Но сожалений горьких нет -
Как нет?
А мы дизайнеры-художники,
И с высоты вам шлем привет -
Привет!
|
|
 |
|
 |
Бaзиль
участник
|
|
в смысле, в начале этого РНР-скрипта...
оффтопик: вышел новый Магазинчик БО!!! Прикольная серия, только короткая 
_________________ Не кочегары мы, не плотники,
Но сожалений горьких нет -
Как нет?
А мы дизайнеры-художники,
И с высоты вам шлем привет -
Привет!
|
|
 |
|
 |
Amiddio1
новый человек
|
|
Файл сохраняется, но он имеет имя ПХП файла и без разширения. Только после добавления к нему .jpg открывается картинка.
|
|
 |
|
 |
Amiddio1
новый человек
|
|
может нужны еще дополнительные Хедеры?
|
|
 |
|
 |
Amiddio1
новый человек
|
|
… а зделал!
Надо добавть строчку:
header("Content-type: image/jpeg");
|
|
 |
|
 |
Бaзиль
участник
|
|
а вроде не надо..
потому что content-type уже указан. Может глючить.
у меня (через IE) нормально скачивается, с сохранением расширения.
там же есть строчка:
header("Content-Disposition: attachment; filename=$name\r\n");
она и указывает имя файла. Попробуй везде прописать его напрямую и потестить в таком режиме.
Да, и еще. Советую во время отладки каждый раз переименовывать скрипт (scr001.php, scr002.php и т.д.), потому что глюки могут возникать из-за кэширования.
з.ы. у тебя какой браузер?
_________________ Не кочегары мы, не плотники,
Но сожалений горьких нет -
Как нет?
А мы дизайнеры-художники,
И с высоты вам шлем привет -
Привет!
|
|
 |
|
 |
Бaзиль
участник
|
|
...и переименуй пременную $name в какую-нибудь $dlfn (что-нибудь понепонятнее  ), потому что иногда из-за таких "простых" имен(name, this и т.п.) появляются какие-то непонятные неполадки.
_________________ Не кочегары мы, не плотники,
Но сожалений горьких нет -
Как нет?
А мы дизайнеры-художники,
И с высоты вам шлем привет -
Привет!
|
|
 |
|
 |
Amiddio1
новый человек
|
|
без header("Content-type: image/jpeg"); у меня не работало. Тестировал в Эксплорере и Мозиле...
Конечная версия:
if ($_GET['dl_file']) {
$name = "path_to_file/".$_GET['dl_file'];
header("Content-Type: application/force-download\r\n");
header("Content-Transfer-Encoding: binary\r\n");
header("Content-Length: ".filesize($name));
header("Content-Disposition: attachment; filename=".$_GET['dl_file']."\r\n");
header("Content-type: image/jpeg");
readfile("$name");
exit();
}
|
|
 |
|
 |
Бaзиль
участник
|
|
"Или так" ©
_________________ Не кочегары мы, не плотники,
Но сожалений горьких нет -
Как нет?
А мы дизайнеры-художники,
И с высоты вам шлем привет -
Привет!
|
|
 |
|
 |
|
Страница 1 из 1 [ Сообщений: 18 ] |
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
|
|