2011-04-05 2 views
0

Google App Engine SDK를 통해 Flex 애플리케이션에서 Picasa 웹으로 이미지를 삽입하려고합니다. 파이썬 클라이언트 라이브러리 대신 간단한 urlfetch를하고 싶습니다. 다음 코드는 다음과 같습니다.Python의 Picasa에 이미지 삽입 urlfetch를 통해 Google App Engine SDK가

"filename_or_handle"에 대한 데이터 전달은 ByteArray 이미지입니다. 그러나 성공하지 못했습니다. 나는 그 문제가 뭔지 전혀 모른다. 제발 조언. 감사.

이 솔루션은 다음과 같은있다 :

def Insert(self, sessionToken, album_or_uri, title, filename_or_handle): 
    image = filename_or_handle.read() 
    contentLength = len(image) 
    result = urlfetch.fetch(url=album_or_uri, 
       method=urlfetch.POST, 
       follow_redirects=True, 
       payload=image, 
       headers={'Authorization': 'AuthSub token="' + sessionToken + '"', 
       'Content-Length': contentLength, 
       'Content-Type': 'image/jpeg', 
       'Slug': title 
       }) 

감사합니다, 존슨.

답변

2

페이로드는 파일과 유사한 객체가 아닌 문자열이어야합니다. API를 인코딩하는 방법은 호출하는 API에 따라 다릅니다. API에서 API를 결정하고 기타 헤더를 ​​설정해야합니다. base64로 인코딩 할 필요는 없습니다. 이미지의 내용을 직접 전달하십시오.

여전히 문제가있는 경우 "성공하지 못했습니다"보다 구체적이어야합니다. 어떤 반응을 얻습니까?

+0

@ 존슨 귀하의 회신에 감사드립니다. 나는 pyamf를 통해 flex 응용 프로그램에서 데이터를 전달합니다. 이미지는 Flex 애플리케이션에 ByteArray로로드되고 App Engine으로 전달됩니다. base64는 단지 테스트 일뿐입니다. 업데이트도 참조하십시오. – michael

+0

@michael 귀하의 업데이트 후에 질문에 답변했습니다. 앞에서 말했듯이 이미지 데이터를 원본 문자열로로드하고 페이로드로 직접 전달해야합니다. 그래도 문제가 계속되면 더 자세한 정보를 제공하십시오. –

+0

@ 존슨, 어쩌면 어리석은 질문입니다. 필자의 경우에는 bytearray 이미지 데이터를 사용할 수 있습니까? 감사. – michael