2008-12-16 65 views
2

我正在嘗試使用CGI :: Application在Perl程序中處理上載的文件。我需要獲取上傳文件的內容類型。從我讀,下面應該工作,但它不適合我:如何使用CGI :: Application獲取上傳文件的內容類型?

my $filename = $q->param("file"); 
my $contenttype = $q->uploadInfo($filename)->{'Content-Type'}; 

事實證明,$q->uploadInfo($filename)回報undef$q->uploadInfo("file")也是如此。

任何想法?

謝謝!

回答

5

您相信上傳的內容是否適合您的內容類型?我只保存上傳的文件到硬盤,並做到:

chomp(my $mime_type = qx!file -i $uploaded!); 
$mime_type =~ s/^.*?: //; 
$mime_type =~ s/;.*//; 

雖然你可以使用文件::類型,文件:: MMagic,或文件:: MimeInfo代替。

1

您是否在檢查任何可能出錯的東西?

我得到的確切代碼工作得很好,但看着它,它包裹在$filename正在undef的測試中,也包含在$cgi->cgi_error()中的任何東西中。我的記憶有點黯淡,但一定有這個原因...

+0

我知道$ filename不是undef,因爲我在嘗試讀取mime類型之前在日誌語句中打印出來。我沒有檢查cgi_error(),但我會嘗試。在任何情況下,File :: Type對我都很好,我喜歡它不依賴於客戶端來提供類型。 – pkaeding 2008-12-16 14:47:01

相關問題