2011-05-04 53 views
3

我有一個Perl腳本試圖發送一個壓縮文件,像這樣用LWP用戶代理模塊Perl請求發送zip文件爲base64?

my $req = POST $url, Content_Type => 'form-data', 
    Content  => [ 
     submit => 1, 
     upfile => [ $fname ] 
    ]; 

其中$ FNAME是文件的路徑。在服務器端,雖然看起來我的POST數組只有「提交」。 我應該base64編碼文件並將其分配給一個變量?什麼是最好的方法來做到這一點?

+0

請發表你的服務器端腳本的代碼,我沒有看到上面的代碼的問題,所以我懷疑你沒有正確拾取文件數據。 – Roger 2011-05-04 15:52:11

回答

2

確保可以解析文件名。儘管如此,你應該得到一個錯誤。至少我在我的版本HTTP::Request::Common

您不必將二進制內容編碼爲Base64。 (當然,除非,服務器端應用程序恰好期望的格式。)

下面是一個完整的示例腳本:

use strict; 
use warnings; 
use LWP::UserAgent; 
use HTTP::Request::Common 'POST'; 

my $ua = LWP::UserAgent->new; 
my $url = 'http://localhost:8888'; # Fiddler 
my $req = POST $url, 
    Content_Type => 'form-data', 
    Content => [ 
     submit => 1, 
     upfile => [ 'C:\temp\bla.zip' ], 
    ]; 
my $line = '=' x 78 . "\n"; 
print $line, $req->as_string; 
my $rsp = $ua->request($req); 
print $line, $rsp->as_string; 
+0

啊我看到我期待該文件被提交到$ _POST數組中,所以當我沒有看到它時我認爲出了什麼問題,我剛剛在$ _FILES ARRAY中意識到它,謝謝! – user391986 2011-05-04 21:24:25