2010-07-11 5 views
3

이 작업을 올바르게 수행하는 방법에 대한 좋은 예를 찾을 수없는 것 같습니다. 발견 한 것들은 저를 위해 작동하지 않습니다. perl mechanize를 사용하여 양식을 제출하려고합니다. 여기에는 양식에 이미지 파일이 있습니다. 내가 가진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> 

: 양식은 내가 그들의 API를 사용하여 내가 계정을 가지고있는 웹 사이트에 대한이 API에 액세스를 시도하고 수 POST 보이는 가장 쉬운 방법을 사용하고 그 사실 방법으로, 다음과 같습니다 이것을 시도했지만, 이미지 파일을 업로드하지 않는 것 같습니다. 어떤 조언을 주시면 감사하겠습니다. (I는 단순위한 스크립트의 부분을 왼쪽,하지만, 파일 업로드를 필요로 그냥 사람이 방법을 사용하여 다른 형태를 제출할 수 있어요)

채우기 양식 필드 : 디버깅
$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 개체로 보내면 오류를 인쇄하고 실패한 초기 호출로 돌아갑니다. 또한

, $mech->submit에 대한 호출 후 print $mech->content를 추가

당신은 설정을 사용자 에이전트 시도 할 수있는 경우에 일부 오류 페이지, 점점 할 수있다 : 당신은 아마

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

또는를, 업로드하려면 이전 페이지에서 쿠키를 가져와야합니다. (브라우저에서 쿠키를 삭제하고 업로드 페이지에서 곧바로 업로드하여이를 테스트 할 수 있습니다.)

+0

이미 성공적이지 못한 호출을 알고 있으므로 디버깅 할 필요가 없습니다. 업로드하려는 곳입니다. 이미지보다 더 기계화 된 형태로 이미지를 업로드하기위한 적절한 구문을 찾을 수 없다는 것에 대한 더 많은 것 – Rick

+0

이미지를 업로드하는 특별한 구문은 없습니다. 붙여 넣은 코드는 괜찮아 보입니다. '성공하지 못함'이라는 의미에 대해 자세히 설명해 주시겠습니까? $ mech-> 제출 후 어떻게됩니까? – miedwar

관련 문제