Главная страница


ru.cgi.perl

 
 - RU.CGI.PERL ------------------------------------------------------------------
 From : Yury Kopyl                           2:5020/400     20 Jan 2004  18:08:25
 To : Andrew Velikoredchanin
 Subject : Re: как получить сформированный файл с сервера ?
 -------------------------------------------------------------------------------- 
 
 Andrew Velikoredchanin -> "как получить сформированный файл с сервера ?" :
 
  AV> Пpивет, dmkochkin@portobello.ie !
 
  AV> Вторник Январь 20 2004, dmkochkin@portobello.ie пишет к Dmitry A.
  AV> Nikitin:
 
  d>>   Помогите начинающему перловоду плиз. Есть репорт который
  d>> формируется перловым скриптом и разглядывается юзером в броузере.
  d>> Все-бы ничего, но если юзер возжелает получить этот репорт в виде
  d>> таблицы в экселе, как быть?
  d>> Предполагаю нужно сделать некую ссылку каковая сформирует
  d>> этот-же/такой-же репорт в файл и передаст юзеру этот файл, т.е.
  d>> чтобы нажав ссылочку он получил диалог открыть/сохранить на диск.
  d>> Однако как это сделать не знаю.
 
  AV> Тут скорее по другому имеет смысл сделать.
  AV> 1. По линку запускается твой скрипт и формирует файл на диск.
  AV> 2. В этом-же скрипте после формирования файла выдаешь заголовок типа
  AV> print "Content-Type: application/octet-stream\n";
  AV> print "Content-Disposition:ttachment;
  AV> filename=tvoe_ima_faila.xls\n\n";
  AV> 3. Открываешь файл и напрямую выдаешь его на стандартный вывод.
  AV> Все. При нажатии на линк файл будет формироваться и выдваться на
  AV> скачивание.
  AV> Броузер при этом спросит куда сохранять файл.
 
  d>> Кстати тут проблема еще и в том, чтобы разные люди работающие с этим
  d>> отчетом, получали свой отчет, а не запрошенный соседом. Т.е. либо
  d>> формировать файл на диске, но с неким идентификатором привязанным к
  d>> юзерской
 
  AV> Все просто. Т.к. и формирование и скачивание идет в одной процедуре,
  AV> имя файла можешь делать с привязкой к pid - в перле это переменная
  AV> $$.
 
  d>> сессии или как-то еще. В общем я полагаю проблема из разряда FAQ,
  d>> буду благодарен если ссылку на этот FAQ или еще какие документы
  d>> кинете, а еще лучше примерчики до кучки. Ключ от квартиры с деньгами
  d>> приветствуется , но необязателен =))
 
  AV> Вот тебе и ключь от квартиры с деньгами: :)
 
  AV> $r->content_type($mimetype.'; name='.$filename);
  AV> $r->header_out('Content-Disposition', $disposition.';
  AV> filename='.$filename);
  AV> $r->send_http_header;
 
  AV> open(my $pg, "<".$filepath);
  AV> binmode $pg;
  AV> my $l = 1;
  AV> my $buf = '';
  AV> while (defined($l) && ($l > 0))
  AV> {
  AV>    $l = read($pg, $buf, 1024);
  AV>    $r->print($buf);
  AV> };
  AV> close($pg);
  AV> exit;
 
  AV> Это реально работающий из под mod_perl кусок кода. Вывод заголовков
  AV> замени на вышеприведенные print-ы с нужными значениями и все должно
  AV> заработать.
 
 вод кусок под mod_perl
 
 my $filename="price.xls";
 
 $r->headers_out->set('Content-Disposition'=>"attachment;filename=$filename")
 
 ;
 
 $r->send_http_header('application/vnd.ms-excel');
 
 tie *XLS => 'Apache';
 binmode(*XLS);
 
 my $workbook  = Spreadsheet::WriteExcel->new(\*XLS);
  Yury Kopyl aka hrg | http://id.totem.ru | Гордость мешает доходам!
 
 --- ifmail v.2.15dev5.1
  * Origin: IAC Samara-Internet, Ltd. (2:5020/400)
 
 

Вернуться к списку тем, сортированных по:

 Тема:    Автор:    Дата:  
 Передать данные   Dmitry A. Nikitin   15 Jan 2004 02:57:56 
 Re: Передать данные   Artem Chuprina   15 Jan 2004 16:54:24 
 Re: Передать данные   Dmitry A. Nikitin   15 Jan 2004 17:35:14 
 Re: Передать данные   Artem Chuprina   15 Jan 2004 20:19:27 
 Re: Передать данные   Dmitry A. Nikitin   15 Jan 2004 21:01:59 
 Re: Передать данные   Artem Chuprina   15 Jan 2004 21:54:50 
 Re: Передать данные   Sergey Leschenko   16 Jan 2004 11:28:20 
 Re: Передать данные   Vasiliy \'Druid\' Misharev   16 Jan 2004 17:02:32 
 Re: Передать данные   Victor Wagner   15 Jan 2004 17:38:17 
 Re: Передать данные   Dmitry A. Nikitin   15 Jan 2004 19:09:46 
 Re: Передать данные   Victor Wagner   15 Jan 2004 19:25:49 
 Re: Передать данные   Konstantin Tokar   15 Jan 2004 20:04:16 
 Re: Передать данные   Artem Chuprina   15 Jan 2004 20:19:57 
 Re: Передать данные   Dmitry A. Nikitin   15 Jan 2004 21:01:59 
 Re: Передать данные   Artem Chuprina   15 Jan 2004 21:55:50 
 Re: Передать данные   Dmitry A. Nikitin   15 Jan 2004 23:19:11 
 как получить сформированный файл с сервера ?   dmkochkin@portobello.ie   20 Jan 2004 14:51:03 
 Re: как получить сформированный файл с сервера ?   Artem Chuprina   20 Jan 2004 15:56:03 
 как получить сформированный файл с сервера ?   Andrew Velikoredchanin   20 Jan 2004 16:26:52 
 Re: как получить сформированный файл с сервера ?   Yury Kopyl   20 Jan 2004 18:08:25 
 Re: как получить сформированный файл с сервера ?   Serge Pekarsky   21 Jan 2004 12:22:35 
Архивное /ru.cgi.perl/102775045df1d.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional