1

ローカルフラットデータベース検索用のcgi検索エンジンがあり、ユーザーが検索結果をエクスポート/ダウンロードできるオプションを追加したいと思います。それはcgiで可能ですか?これがコードです。

     #!/usr/bin/perl
      read(STDIN, $buffer,$ENV{'CONTENT_LENGTH'});
      # Split the name-value pairs
      @pairs = split(/&/, $buffer);
      foreach $pair (@pairs) {
       ($key, $value) = split(/=/, $pair);

     $value =~ tr/+/ /;
      $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

     $formdata{$key}.= "$value";
      }
   $search = $formdata{'search'};
   open(INFO, "/test.txt");   
   @array=<INFO>;
   close (INFO);
   print "Content-type:text/html\n\n";
   print "<html>\n";
    print "<head><title>Search result</title></head>\n";
   print "<body>\n"; 
   print "<h4><font color=#990000>This is your search result!</h4>\n"; 
   $search_url = 'https://test.php';
   foreach $line (@array) {
   if ($line =~ /$search/){
   ($host,$ip)=split(/\|/,$line);
   $records= ++$counter;
   @result =($host,$ip);
   print "<font color=#7a378b><b><p>";
   print "<table border=0 cellpadding=0 cellspacing=0 style=border-collapse: collapse       
   bordercolor=#111111 width=20% bgcolor=#C0C0C0>";

   print "</tr>";
   foreach (@result) {
   @words = split ;
   print     "<tr><td width=33% bgcolor=#DCDCDC><b><font color=#000080 size=1   face=Courier New>$words[0]</font></b></td>";
  print     "<td width=36% bgcolor=#DCDCDC><b><font color=#000080 size=1 face=Courier    
  New>$words[1]</font></b></td>";
  print "</table>";
 }
 }
   }

  if ($records== 0) {
  print " Sorry! No records found\n";
   }
4

1 に答える 1

3

はい。従来の方法は、適切なコンテンツタイプヘッダーを出力することです。

Content-type: text/csv
Content-type: text/xml

オプションで、「コンテンツの配置」も指定します。準拠しているブラウザでは、これによりクライアントはサーバーの出力をローカルファイルに保存するオプションが提供されます。

Content-disposition: attachment;filename="myfilename.csv"

(friedoの賢明な提案を使用するように編集してください)

于 2012-09-17T20:55:51.143 に答える