сохранение файла

chiffa

Guest
софранение файла

Всем привет. У меня така небольшая загвоздка. Мне надо что бы сразу после загрузки странице пользователю предлогало софранить текстовый файл (1.txt). Думал сделать таким образом
Header("Location: 1.txt"); но содержимое файла просто віводиться в браузер, что собственно не удивително. Подскажите как сделать что бы предлагало сохранить файл. Зарание всем спасибо!
 

Alexandre

PHPПенсионер
chiffa сохранить - в смысле на компе пользователя:

Попробуй такие заголовки:
Expires: 0;
Cache-Control:must-revalidate, post-check=0, pre-check=0
ContentType: application/vnd.ms-word
Content-Disposition: inline; filename="report.txt"
 

chiffa

Guest
Alexandre, спасибо, файл сохраняет, но если он лежит со скриптом в одной дериктории, если же я пишу "../report.txt", мне предлагает сохранить саму веб-страницу...
 

chiffa

Guest
AHTIXPICT, ничего
PHP:
header('Content-type: application/vnd.ms-word');
header('Content-Disposition: inline; filename="../1.txt"');
readfile('../1.txt');
 

AHTIXPICT

Новичок
1. header('Content-Disposition: inline; filename="1.txt"');

2. Не используй относительный путь: readfile('/полный/путь/к/файлу/1.txt');
 

chiffa

Guest
AHTIXPICT, а если я из Винды полный путь такой:
Z:/home/localhost/www/new/1.txt Так? При такой вариант содержимое файла выводиться в браузер...
PHP:
header('Expires: 0');
header('Cache-Control:must-revalidate, post-check=0, pre-check=0');
header('Content-type: application/vnd.ms-word');
header('Content-Disposition: inline; filename="1.txt"');
readfile('Z:/home/localhost/www/new/1.txt');
 

AHTIXPICT

Новичок
Только что под виндами сделал - все работает:

<?php
header("Expires: 0");
header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
header("Content-type: application/vnd.ms-word");
header("Content-Disposition: inline; filename=7.txt");
readfile("D:/Temp/HomePage/test/7.txt");
?>
 

SiMM

Новичок
chiffa, неужели сложно выучить три простых правила
1. Смотреть в мануал ([m]header[/m])
2. Пользоваться поиском.
3. Существует такая штука, как гугль
 

chiffa

Guest
SiMM, 1. ман не помог.
2. чесно признаюсь, по форуму не искал...
3. Искал не по гуглю а по яндексу...

-~{}~ 30.12.04 12:49:

AHTIXPICT, а какой у тебя Апачь и пхп? У меня Апачь 1.3.27, пхп - 4.3.1
 

Alexandre

PHPПенсионер
chiffa
Заголовок Content-Disposition: inline; filename="report.txt" означает, что это имя сохраняемого файла,

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

а, ты видно, делаешь редирект на этот файл (может я ошибаюсь ?)

Может что-то с браузером ;), ведь он решает , что записывать как файл, а что показывать?
 

AHTIXPICT

Новичок
Alexandre
Точно, в ИЕ не срабатывает.

Короче такие заголовки нужны, в опере и ИЕ проверил работает:

<?php
header("Expire: Mon, 4 Apr 1995 01:01:01 GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Content-type: application/".preg_replace("/(\w+).(\w+)/i","\\2","7.txt"));
header("Content-Disposition: attachment; filename=7.txt");
header("Content-length: ".filesize("D:/Temp/HomePage/test/7.txt"));
readfile("D:/Temp/HomePage/test/7.txt");
?>
 

Alexandre

PHPПенсионер
AHTIXPICT у меня для exel
все работает
WORD от EXCEL ни чем не отличается,
может ждело в расширении txt
сейчас проверю

-~{}~ 30.12.04 15:17:

проверил, действительно несрабатывает,
если делать расширение doc то все сохраняет

осечка вышла
 

AHTIXPICT

Новичок
Alexandre
Мой предыд пост срабатывает для всех расширений в ИЕ и ОПЕРЕ, про остальное не знаю
 

Alexandre

PHPПенсионер
вот где сабака зарыта:
header("Content-Disposition: attachment; filename=7.txt");

-~{}~ 30.12.04 15:27:

а у меня inline

-~{}~ 30.12.04 15:28:

проверил, действительно несрабатывает,
если делать расширение doc то все сохраняет
я имел ввиду свои заголовки
 
Сверху