2013-03-07 3 views
0

POST를 통해 두 개의 다른 웹 사이트에서 파일을 보내야합니다. 그래서 Requests 라이브러리를 사용합니다.두 번째 POST에서 항상 멀티 파트로 인코딩 된 파일이 비어 있음

두 번째 응답의 사진은 항상 크기가 0입니다. 웹 사이트 주문을 변경할 때도 마찬가지입니다.

import requests 

data = {'id': 1} 

f = open('/tmp/photo7.jpg', 'rb') 
image = {'image': ('photo7.jpg', f)} 

# works fine 
requests.post('http://site.com/', data=data, files=image) 
# empty file 
requests.post('http://othersite.com/', data=data, files=image) 

무엇이 문제 일 수 있습니까?

파일 객체의 현재 위치에 문제가 있다고 생각합니다 (가능하면 첫 번째 응답 이후에 파일의 끝 부분에 있음). 그러나 확실하지 않습니다.

I (0) 제대로 추적 추구하게 할 수 없습니다 http://pastebin.com/gnD2c1AR

감사합니다. seek를 사용

답변

1

올바른 방법입니다,하지만 당신은이 줄 requests.post 대신 파일 핸들의 결과 (0이됩니다) 추구의 전달이 시도

files = {'image': ('photo7.jpg', f.seek(0))} 

:

... 
requests.post('http://site.com/', data=data, files=image) 
f.seek(0) 
requests.post('http://othersite.com/', data=data, files=image)