2014-12-18 2 views
2

나는 다음과 같은 코드가 있습니다 그러나게시물 통화에서 파일 데이터 전송

email = '[email protected]' 
avatar = open('/Users/david/Desktop/a.png').read() 
data = { 
    'email': email, 
    'avatar': avatar 
} 
body = json.dumps(data) 
requests.post(url, headers=headers, data = body) 

, 나는 다음과 같은 JSON 오류 얻을 일을 시도 :

UnicodeDecodeError: 'utf8' codec can't decode byte 0x89 in position 0: invalid start byte 

가 어떻게 파일 데이터를 보낼 것을 이리?

답변

0

대부분의 경우, read() 당신이 생각하는 일을하지 않기 때문에 :

>>> f = open('image.png').read() 
>>> f 
'\x89PNG\n' 

기회는 그것이 개행 문자 즉, 첫 번째 '라인'에 도달하는 시점까지 읽는 것, 그리고 아무것도 위의 테스트에서와 마찬가지입니다.

또한 JSON 개체에 png 데이터를 추가하려는 경우 base64로 변환해야하거나 잘못된 UTF8 문자가 더 많이 표시 될 수 있습니다.