2010-07-11 74 views
3

我似乎無法找到一個很好的例子,如何正確地做到這一點,我發現不是爲我工作..我想提交一個表單使用Perl機械化,其中窗體有一個圖像文件,形式如下,它實際上是一個方法我試圖訪問該API的網站從我有一個帳戶,並使用POST似乎是最簡單的方式來使用他們的API:Perl機械化,提交表單與文件(圖像)?

<HTML> 
<BODY> 

<form 
method="post" 
name="image_upload" 
action="http://example-website.com" 
enctype="multipart/form-data"> 
<input type="hidden" name="field1" value=""> 
<input type="text" name="username" value=""> 
<input type="text" name="password" value=""> 
<input type="file" name="pict"> 
<input type="text" name="field2" value="0"> 
<input type="text" name="field3" value="0"> 
<input type="submit" value="Send"> 
</form> 

</BODY> 
</HTML> 

我有試過這個,但它沒有上傳圖像文件,它似乎..任何意見表示讚賞。 (我離開了腳本簡單的部分,但是我可以用這個方法來提交其他形式,只要不是那些需要上傳文件)

填充表單字段:
$mech->form_name('image_upload'); 

$mech->set_fields(field1 => '', 
username => $username, 
password => $password, 
pict => '/home/user1/Desktop/pic.jpg', 
field2 => '0', 
field3 => '0' 
); 

#### submit form 
$mech->submit(); 

回答

1

對於調試,添加autocheck => 1$mech對象,它將打印錯誤並返回最早的不成功呼叫。

此外,添加一個print $mech->content調用$mech->submit後,

你可能會得到一些錯誤頁面,在這種情況下,你可以嘗試設置用戶代理:

$mech->agent_alias('Windows IE 6')

或者,也許你需要從較早的頁面獲取cookie才能上傳。 (你可以通過清除瀏覽器中的cookies並嘗試從上傳頁面直接上傳來測試這個)

+0

我不需要調試它,因爲我已經知道不成功的調用..其中我試圖上傳的地方圖像..它更多關於無法找到正確的語法來上傳圖片的機械化比其他任何形式 – Rick 2010-07-11 19:12:30

+0

沒有特殊的語法上傳圖像。你粘貼的代碼看起來很好,你能詳細說明'不成功'的含義嗎? $ mech-> submit之後會發生什麼? – miedwar 2010-07-11 19:29:24