2014-04-23 2 views
0

Google App Engine documentation을 사용하여 파일을 Google App Engine에 업로드하면 업로드 된 파일 (self.request.get('user_file'))의 내용을 매우 간단하게 표시 할 수 있지만 old_dev_appserver.py로 수행 할 수는 있지만 현재 dev_appserver로 가져올 수는 없습니다. py (v1.9.2). 하나가 아니라 최신 (1.9.2) dev_appserver와, self.request.get('user_file')를 통해 GAE에서 파일을 얻을 수, old_dev_appserver.py에서새로운 dev_appserver

<form name="myform" action="http://localhost:8080/sync?cmd=tester" enctype="multipart/form-data" method="post"> 
    Username: <input type="file" name="user_file" /> 
    <input type="submit" value="Submit" /> 
</form> 
  • : 여기

    는 들어오는 데이터를 생성하는 간단한 예제 .py

  • WebApp2 says "업로드 된 파일은 request.POST에서 직접 cgi.FieldStorage (cgi 모듈 참조) 인스턴스로 사용할 수 있습니다." 그러나 request.POST은 비어 있으며 cgi.FieldStorage()에는 'user_file'도 포함되어 있지 않습니다. 내가 self.request.params을 인쇄하는 경우

이상하게도, 나는 (u'user_file', FieldStorage(u'user_file', u'myfile.ico')) 인 UnicodeMultiDict의 요소를 참조 할. 하지만 명명 된 액세스를 통해 또는 매개 변수를 반복하는 중 하나를 통해 해당 요소를 가져 오려고하면 얻을 수 없습니다. Len(self.request.params)을 수행하더라도 내가 보는 것보다 하나가 적어지고 'user_file'요소가 누락되었습니다. old_dev_appserver로이 작업을 수행하면 Len(self.request.params)이 올바른 것입니다.

user_file을 얻으려면 어떻게해야합니까?

답변

1

결국 알아 냈습니다. 나는 다른 문제들을 분류하면서 요청 (params, body, etc.)의 요소를 로깅했다. 하지만 cgi.FieldStorage 요소는 한 번만 인스턴스화 할 수 있으므로 실제로 self.request.get('user_file')에 도착할 때까지 이미 사라졌습니다.

디버깅을 제거하면 실제로 작동합니다.

관련 문제