Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как гарантированно обеспечить загрузку файла вместо его открытия в браузере?
 
 автор: ДацкыйКот   (19.05.2009 в 18:48)   письмо автору
 
 

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

Проблема в том, что браузеры некоторые типы файлов пытаются открыть вместо загрузки. Например тот же txt. У некоторых версий оперы был глюк - пытались открыть в браузер zip.

Необходимо же обеспечить именно загрузку на диск. Как это делается?

  Ответить  
 
 автор: ddhvvn   (19.05.2009 в 18:56)   письмо автору
 
   для: ДацкыйКот   (19.05.2009 в 18:48)
 

это делается выдачей соответствующих заголовков. вот уж не знаю только можно ли это сделать на JS.

  Ответить  
 
 автор: PAT   (19.05.2009 в 19:07)   письмо автору
 
   для: ДацкыйКот   (19.05.2009 в 18:48)
 

Если только средствами HTML, то гарантированный способ - дать файлу какое-нить "странное"
расширение, что-то типа file.a1b2c3d4e5f6 и дополнительно объяснить, что после скачивания
перед использованием файл надо вручную переименовать во что-то "реальное", например, в
file.txt.

Если файлохранилище находится на доступном вам сервере с поддержкой PHP, то тогда немного
проще - надо просто послать заголовок
<?php
header
("Content-Disposition: attachment; filename=file.txt");
header("Content-Type: application/x-force-download; name=\"file.txt\"");
?>

  Ответить  
 
 автор: ДацкыйКот   (19.05.2009 в 19:24)   письмо автору
 
   для: PAT   (19.05.2009 в 19:07)
 

> Если файлохранилище находится на доступном вам сервере с поддержкой PHP

Проблема в том, что скрипты работают на хостинге с поддержкой PHP. А файлы лежат на хостинге без поддержки PHP.

> , то тогда немного проще - надо просто послать заголовок
А заголовки, которые вы написали - в какой момент они должны выдаваться? И каким скриптом? На котором ссылка на загружаемый файл? Или нужен скрипт-для-загрузки, который принимает путь к файлу и формирует эти заголовки?

  Ответить  
 
 автор: ДацкыйКот   (19.05.2009 в 19:27)   письмо автору
 
   для: PAT   (19.05.2009 в 19:07)
 

>Если только средствами HTML, то гарантированный способ - дать файлу какое-нить "странное" >расширение,

Не подходит такой вариант. Слишком большой гемор для пользователей.

В принципе могу рассмотреть любые варианты и PHP и JS, но опять же с условием описанным выше - на файловом хостинге нет их поддержки, только на хостинге приложения.

  Ответить  
 
 автор: PAT   (19.05.2009 в 22:51)   письмо автору
 
   для: ДацкыйКот   (19.05.2009 в 19:27)
 

Тогда просто прописывайте каждую ссылку в таком виде:
<a href="http://файлохранилище/file.txt"
   onclick="alert ('Жмите правой кнопкой мыши и выбирайте &#171;Cохранить объект&#187;'); return false">Скачать файл file.txt</a>

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования