Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   передача файла с сервера на клиент (https://javascript.ru/forum/misc/12902-peredacha-fajjla-s-servera-na-klient.html)

ojogin 08.11.2010 08:07

передача файла с сервера на клиент
 
Добрый день. У меня вот какая проблема. Мне надо организовать передачу файла с сервера на клиент, известен такой споспоб передачи:

session_start();
header("Content-type: text/txt");
header("Content-Disposition: attachment; filename=\"text.txt\"");
echo $filestring;

так вот)))) это замечательно работает на локальной машние во всех браузерах. Если запуспить скрипт с рабочего сервера, это работает во всех браузерах кроме explorer'а. Дело в том что explorer предлогает сохранить не text.txt с содержимым $filestring а сам php файл который отрабатывается на сервере. Путем проб и ошибок было установленно что дело в открытии сессии.
А теперь внимание вопрос. можно ли организовать сохранение файла (который передается в виде строки) на клиенте без использования header(); либо отрыть сессию так что бы это не вызвало конфликтов с header();
Спасибо со помощь)

B@rmaley.e><e 08.11.2010 09:46

IE (как и любой другой браузер) не может предложить сохранить сам .php файл потому что этот файл интерпретируется на сервере и клиенту отдается результат его работы. В Вашем случае IE просто пытается назвать файл так же, как называется тот файл, к которому Вы обратились запросом.

Serg_pnz 08.11.2010 10:44

header('Content-type: application/octet-stream');
header("Content-Disposition: attachment; filename=price.csv"); 
echo fread(fopen('price.csv', "rb"), filesize('price.csv'));

Так попробуйте

B@rmaley.e><e 08.11.2010 17:48

Serg_pnz, Вы о чем? Автор где-то говорил, что ему нужно вывести .csv файл?

Serg_pnz 08.11.2010 17:58

Цитата:

Сообщение от B@rmaley.e><e (Сообщение 78058)
Serg_pnz, Вы о чем? Автор где-то говорил, что ему нужно вывести .csv файл?

Читаю в вопросе
Если запуспить скрипт с рабочего сервера, это работает во всех браузерах кроме explorer'а.

и предложил немного другой вариант. Подходит для чего угодно, не только .csv

B@rmaley.e><e 08.11.2010 20:04

Ваш вариант ничем не отличается от того, что написано в первом после у автора. Точнее он не будет отличаться после доработки до того состояния, которое нужно автору.

Serg_pnz 09.11.2010 11:04

Не сочтите... охото разобраться.
Вот код из первого поста - всё работает и в IE http://tmp004.jcase.ru/

<?php
session_start();
header("Content-type: text/txt");
header("Content-Disposition: attachment; filename=\"aaaaaaaaaaa.txt\"");

echo 'sdvsdvsdvsdv';
?>

vladlen 11.11.2010 02:38

Без использования заголовка вы вобще ничего не передадите, это часть спецификации. Все что будет передано - мистика. За вас браузер или PHP что-то сам подставил. И в догонку MIME application/octet-stream не подходит для передачи MPG под винду. Правда Content-Disposition я не определял и видимо в этом и была моя беда :) Настраивался HTTPD, а не PHP.

Bercut 11.11.2010 23:21

Цитата:

Сообщение от B@rmaley.e><e
IE (как и любой другой браузер) не может предложить сохранить сам .php файл потому что этот файл интерпретируется на сервере и клиенту отдается результат его работы.

во истину так

Цитата:

Сообщение от B@rmaley.e><e
В Вашем случае IE просто пытается назвать файл так же, как называется тот файл, к которому Вы обратились запросом.

но у автора явно указано

header("Content-Disposition: attachment; filename=\"text.txt\"");

Bercut 11.11.2010 23:26

Цитата:

Сообщение от ojogin
Путем проб и ошибок было установленно что дело в открытии сессии

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


Часовой пояс GMT +3, время: 01:00.