2013-10-03 17 views
0

我想將文件的內容(原始內容)發送到瀏覽器。 但是,該文件作爲附件提供,即使標題中沒有附件。 任何人都可以請建議如何使用Perl在瀏覽器上顯示原始數據?如何使用Perl在瀏覽器上顯示二進制數據?

#!/usr/bin/perl 
use strict; 
use warnings; 
use CGI; 
use CGI::Carp qw(fatalsToBrowser); 
use File::Copy qw(copy); 
use File::Spec::Functions qw(catfile); 
use POSIX qw(strftime); 
use Time::Local; 
use HTTP::Status qw(:constants :is status_message); 
use Digest::MD5 qw(md5 md5_hex md5_base64); 
use File::Basename; 
use URI; 



my $extfile = '/home/suresh/clientrequest.txt'; 
open(FH, ">>$extfile") or die "Cannot open file"; 
my $query = CGI->new; 
my $stcode = status_message(206); 
my $uri =$ENV{'REQUEST_URI'}; 
my $rdate =strftime("%a, %d %b %Y %H:%M:%S %Z", localtime()); 
print FH "Client request: ", $ENV{'REQUEST_URI'}, "\n"; 
my $dir = '/srv/samba/Assets'; 
#my $dir = '/home/suresh/Assets'; 
my $nffFile = fileparse ("$uri", qr/\.[^.]*/); 
my $fullFname = $nffFile . ".nff"; 
my $path = catfile($dir, $fullFname); 
my $filesize = -s $path; 
print FH "Size of the file: ", $filesize, "\n"; 

#Search requested asset files 
opendir(DIR, $dir); 
my @files = readdir(DIR); 
if (grep($_=~/$fullFname/,@files)){ 
print FH "Found the requested NFF file: ", $fullFname, "\n"; 
open my $fh, '<:raw', $path; 
print "$ENV{SERVER_PROTOCOL} 206 $stcode"; 
print $query->header(
    -'Accept-Range'=>'bytes', 
    -'Date'=> $rdate, 
    -'Content-Range'=>'0-188/$filesize', 
    -'Content-Length'=>$filesize, 
    -'Content-Type'=>'application/octet-stream', 
    -'Connection'=>'Keep-Alive', 
    -'Media-Type'=>'application/octet-stream', 
    ); 
binmode STDOUT, ':raw'; 
    copy $fh => \*STDOUT; 
    close $fh 
     or die "Cannot close '$path': $!"; 

}else { 
    print $query->header('text/plain', '404 File not Found!'); 
    print FH "Requested NFF file: ", $fullFname, " not found!!\n\n"; 
    } 
closedir(DIR); 
+0

編輯標題,以便它提供更多關於我期望實現的信息。 – Suresh

回答

0

解決..這是一個簡單的改變,我需要改變內容類型爲文本/ html來存檔這個。

相關問題