M.C.P.C.

―むり・くり―プラスコミュニケーション(更新終了)


| トップページ |

2006年3月20日 23:39

Hyper EstraierをWin32に入れる

このエントリーをはてなブックマークに追加 mixiチェック

全文検索システムのHyper Estraierを Win32 に入れるテスト。うち、何種類全文検索入れているんだろう。

Hyper Estraier は、namazu を入れたことがあるのなら絶対失敗しないくらい簡単にはいるのだけれども、日本語ファイル名の PDF が URL エンコーディングされている関係なのか、Apache が素直にファイルシステムから取得してくれないので、引数に URL エンコーディングを与えると、その URL エンコーディングをデコードしてファイルシステムから取ってくるリダイレクタな Perl スクリプトををかませたのだけれども(←最近みなそれで解決)、コミュニティ内では既に解決していそうです。

↓危険なので(サニタイズあたりが)、試験用として。

#!/perl/bin/perl -w
#filename: re.cgi
#usage: re.cgi?url=http://localhost/%20.pdf
 
use strict;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
use URI::Escape;
 
my $q = new CGI;
my $url = $q->param('url');
my $filebase= 'c:/search';
my $fullpath = uri_unescape($url);
(my $filename = $fullpath)=~ s|.+[/\\](.+?)|$1|;
$fullpath = "$filebase/$filename";
 
open( IN, $fullpath )
  || die "can't open $fullpath \n";
binmode(IN);
my $content_length = -s $fullpath;
read IN, my $data, $content_length;
close(IN);
 
print $q->header(
  -type=>'application/pdf',
  -'Content-Length'=>"$content_length",
  -'Accept-Ranges'=>'bytes'
);
 
print $data;

今日学んだのは、PDF は Content-Length が無いとブラウザで読み込めないことと、CGI.pm の header で、Content-Length などのハイフンを含んだものを入れたいときは、クォーテーションで囲わないといけないってことです。

投稿 大野 義貴 [パソコン・インターネット] | |

トラックバック(0)

トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/1590

コメントする