2011-12-05 5 views
0

파이썬에서 파일로 POST 요청을 만들 수 있지만 기존 양식이 없으면 "파란색 중"파일을 POST해야합니다. stackoverflow에 파일 업로드의 몇 가지 예가 있지만 모두 양식에 파일을 첨부하는 것과 관련됩니다.파이썬으로 파일을 POST하는 방법은 없지만 형식은 없습니까?

Content-Length: 218853 
Content-Type: application/octet-stream 
Cookie: some-cookie-data 

그리고 POST 데이터를 디스크에서 파일의 내용 만에 :

난 그냥 같은 헤더 POST 요청을 생성해야합니다.

브라우저 세션의 쿠키를 보존해야하며, 일부 JSON이 포함 된 Content-Type text/plain;이 될 응답을 다시 읽고 처리해야합니다.

답변

2

편집 : 기계화 예제를 찾고 있다고하셨습니다. 나는 기계화 된 사용자가 아니지만 전체 urllib2 API를 지원합니다. 그래서이 SO 대답은 도움이 될 것입니다 : Send file using POST from a Python script

당신은 포스트 당신과 같은 HTTP 트랜잭션을 만들고있어를 만들 때 :

그 방법이기 때문에 당신은 항상 "형식"에 보내는 그래서
POST /path/to/script HTTP/1.0 
User-Agent: UserAgent/1.0 
Content-Type: application/x-www-form-urlencoded 
Content-Length: 7 

hello=world 

게시물 요청은 데이터를 수신합니다.

그럼, 당신이 원하는 것은 게시 할 스크립트가 데이터를 기대하고 있다는 것입니다 (양식의 name 속성은 일반적으로 키 = 값 쌍을 구분하는 데 필요한 키입니다). 게시물 요청을 작성하십시오.

올바른 인코딩 (멀티 파트 마임)을 사용하고 있고 헤더의 올바른 Content-Length를 계산하고 있는지 확인하십시오.

0

이렇게하면 기계화 코드를 열어서 이렇게했습니다.

# Mechanize 
    from mechanize import Browser, urlopen, Request 

    # Submit it! 
    image_file = open(image_filename) 
    image_data = image_file.read() 

    request  = Request(url, image_data, {'Content-Type': 'application/octet-stream'}) 

    response  = urlopen(request) 

P. LOL, 나는 오래 전이 블로그에 대해 블로깅했음을 깨달았다 :

http://theremichaelwilson.wordpress.com/2011/03/26/posting-a-file-with-mechanize-and-python/

관련 문제