2013-08-31 4 views
1

Я создал сценарий CGI в Perl, который загружает файл на сервер. Скрипт работает отлично:загрузить файл через скрипт Perl CGI без сохранения файла

my $upload_filehandle = $query->upload("config"); 

if (!$upload_filehandle) 
{ 
    die "Configuration file could not be loaded"; 
} 

open (UPLOADFILE, ">$upload_dir/$filename") or die "$!"; 
binmode UPLOADFILE; 

while (<$upload_filehandle>) 
{ 
    print UPLOADFILE; 
} 

close UPLOADFILE; 

Проблема заключается в том, что я не хочу, чтобы сохранить файл на сервере, но только хотите сохранить часть его содержимого в некоторых переменных в сценарии Perl. Я не знаю, как это сделать. Я попробовал следующий фрагмент кода вместо:

my @array; 
my $upload_filehandle = $query->upload("config"); 

if (!$upload_filehandle) 
{ 
    die "Configuration file could not be loaded"; 
} 

open (UPLOADFILE, ">$upload_dir/$filename") or die "$!"; 
binmode UPLOADFILE; 

while (<$upload_filehandle>) 
{ 
    push @array, $_; 
} 


close UPLOADFILE; 

Я хочу сохранить содержимое файла в массив, но он выдает ошибку:

[Sat Aug 31 18:03:27 2013] [error] [client 127.0.0.1] malformed header from script. Bad  header=\xff\xd8\xff\xe11\xdcExif: loadConfig.cgi, referer: http://localhost/cgi-bin/uploadFile.cgi 

Я думаю, что это на линии push @array, $_; и может быть вызвано тем, что заголовок файла не распознается.

Есть ли у вас какие-либо идеи о том, как сохранить содержимое файла без сохранения файла?

Заранее благодарю вас за ваш ответ.

ответ

1

Похоже, вы пытаетесь распечатать файл (\xff\xd8\xff\xe11\xdcExif) до надлежащего HTTP заголовка:

print $query->header; 

Я прибиралась сценарий немного, и это работает отлично:

#!/usr/bin/perl 

use strict; 
use warnings; 

use CGI; 
use CGI::Carp 'fatalsToBrowser'; 

my $query = CGI->new; 

my $upload_filehandle = $query->upload("config") 
    or die "Configuration file could not be loaded"; 


my @array = <$upload_filehandle>; 

print $query->header; 

use Data::Dumper; 
print Dumper(\@array); 
+0

Большое спасибо, это сработало. – Mike

Смежные вопросы