2013-12-18 2 views
0

1MB보다 큰 파일을 지원하고 싶기 때문에 이미지를 blobstore에 업로드하고 싶습니다. 이제 내가 찾을 수있는 유일한 방법은 클라이언트가 지리적 위치, 태그 및 서버가 엔티티에 넣는 메타 데이터와 같은 메타 데이터를 보내는 POST를 발행하는 것입니다. 이 엔티티에서 서버는 또한 실제 이미지 데이터가 저장 될 blob 키를 넣고 서버는 create_upload_url()에 의해 반환 된 URL을 클라이언트에 반환하여 요청을 마무리합니다. 이것은 잘 작동하지만, 두 번째 요청이 결코 발행되지 않는 경우와 같이 불일치가 발생할 수 있으므로 BLOB가 채워지지 않습니다. 엔티티는 이제 빈 얼룩을 가리키고 있습니다.Google App Engine : 동일한 요청으로 파일 및 기타 필드 업로드하기

내가 볼 수있는 유일한 해결책은 blob이 업로드로 채워 졌는지 확인하는 지연 작업을 트리거하는 것입니다. 나는이 솔루션에 대한 열렬한 팬이 아니므로 누구나 더 나은 솔루션을 염두에두고 있는지 짐작할 수 있습니다.

+0

고객? 어떤 종류의 고객입니까? 신청서 또는 양식? – voscausa

+0

논리에 따르면 아무 것도 괜찮습니다. 모바일 앱, 쉘에서 실행되는 Python 스크립트 또는 브라우저 (예 : js)에서 실행중인 스크립트 일 수 있습니다. – marcorossi

+0

업로드 URL에 다중 게시물을 보내야합니다. – voscausa

답변

1

나는 똑같은 생각 과정을 거쳤지 만 Java에서는 Apache Commons FileUpload를 사용했다. 저는 파이썬에 익숙하지 않지만 multipart/form-data 업로드를 처리하는 방법 만 필요합니다.

이미지와 추가 필드를 함께 업로드하여 JQuery를 사용하여 멀티 파트 양식 데이터를 어셈블합니다. 그 다음에 POST을 내 서버에 연결합니다.

서버 측에서 파일을 가져 와서 Google Cloud Storage client library (Python 링크)을 사용하여 Google Cloud Storage에 씁니다. 이 작업은 하나의 청크에서 수행 할 수 있으며 큰 파일 인 경우 '스트리밍'할 수 있습니다. GCS에있는 App Engine 앱은 동일한 라이브러리를 사용하여 App Engine 앱을 읽을 수도 있고 설정 한 ACL에 따라 공개 URL로 직접 제공 할 수도 있습니다.