Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Выгрузка файла

6.0K
19 июня 2006 года
_Greezlee_
41 / / 17.09.2005
Надо сделать так: имеется страница с описанием файла, на ней две сслыки просмотреть файл (файлы могут быть только htm, doc, txt, jpg, xls), при этом файл должен открываться в окне браузера, и вторая ссылка - сохранить файл - при этом должен выскакивать диалог сохранения файла, и браузер сохраняет его

Делаю так: для кнопки Просмотреть файл, делаю пряму ссылку на файл - в этом случае если файл html или jpg,gif, то он сразу открывается в окне браузера, если файл doc или xls, то браузер спрашивает сохранить или открыть файл. Можно убрать этот диалог и заставить его сразу сохранять?

Далее, для кнопки сохранить файл юзаю такой скрипт:

function download_file($file_name)
{
header( "Content-Type: application/octet-stream\nContent-Disposition: inline; filename=\"".$file_name."\"\nContent-Length: ".(string)(filesize( $file_name ) ) );
$fh = fopen( $file_name, 'rb' );
fpassthru( $fh );
fclose( $fh );
exit();
}

$file_name - это имя файла на сервере.

В этом случае если файл имеет расширение doc или xls, то выскакивает предложение сохранить файл (кнопки открыть на нем нету),но если файл - html, jpg... - то он все равно открывает его в окне браузреа. Как исправить?
4
19 июня 2006 года
mike
3.7K / / 01.10.2002
Для того чтобы файл не открывался, а сохранялся можно использовать поле HTTP заголовка "Content-Disposition:"

 
Код:
header ( "Content-Disposition: attachment; filename=price.doc" );
6.0K
20 июня 2006 года
_Greezlee_
41 / / 17.09.2005
Mike - спасибо:))
А может кто-нить подсказать, как можно убрать диалог "открыть/сохранить/отмена" при выборе кнопки "Просмотреть"?
12
20 июня 2006 года
alekciy
3.0K / / 13.12.2005
Нельзя.
6.0K
20 июня 2006 года
_Greezlee_
41 / / 17.09.2005
фигня война...
12K
03 октября 2006 года
WarWar
7 / / 29.07.2005
Странно, но неработает в IE6,7
Причем Опера и нетшкафом прекрасно все видят (и имя файла и размер и миме-тип), а ИЕшка невидит ничего (ну в имени может увидеть название скрипта: index.php).
"Файлики" небольшие, посему сидят в сессионной переменной.

Думаю что надо свои функции получения данных из сессионного массива использовать, похоже что инициализация сессии происходит раньше вывода заголовков.
РНР 4.2.4.
12K
03 октября 2006 года
WarWar
7 / / 29.07.2005
Код:
//
      if ($HTTP_SERVER_VARS["HTTP_RANGE"]) {
        $range = $HTTP_SERVER_VARS["HTTP_RANGE"];
        $range = str_replace("bytes=", "", $range);
        $range = str_replace("-", "", $range);
        if ($range) {$str=substr($str,$range);}
      }
      if ($range) {
        header("HTTP/1.1 206 Partial Content");
      }
      else {
        header("HTTP/1.1 200 OK");
      }
           
      header("Content-Disposition: attachment; filename = \"$downloadfile\"",true);

      header("Content-type: application/octet-stream; name=\"$downloadfile\"");
      //header("Content-type: text/plain; name=\"$downloadfile\"");

      header("Content-Transfer-Encoding: binary");
      header("Last-Modified: ".date("D, d M Y H:i:s T"));
      header("Accept-Ranges: bytes");
      header("Content-Range: bytes $range-$len/$len");
      header("Content-Length: $len");
      echo "$str";
      exit;
12K
03 октября 2006 года
WarWar
7 / / 29.07.2005
хм....
зашел на php.net в документацию по функции header и нашел решение:

header('Pragma: private');
header('Cache-control: private, must-revalidate');

без этих строчек ИЕшки сходят с ума.

зы. блин. как я люблю мелкософт.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог