2013-12-17 171 views
0

我一直在试图将文件上传到从我的谷歌AppEngine应用程式Google云存储。但我不断收到此错误信息:文件上传到谷歌云存储AppEngine上(Python)的

File "/base/data/home/runtimes/python27/python27_dist/lib/python2.7/cgi.py", line 540, in __getitem__ 
raise KeyError, key KeyError: 'files' 

这是我的客户端上传表单:

<form id="fileupload" action="/uploads" method="POST" enctype="multipart/form-data"> 
    <!-- Redirect browsers with JavaScript disabled to the origin page --> 
    <noscript><input type="hidden" name="redirect" value="http://2479ja.tv/jqueryupload"></noscript> 
    <!-- The fileupload-buttonbar contains buttons to add/delete files and start/cancel the upload --> 
    <div class="row fileupload-buttonbar"> 
     <div class="col-lg-7"> 
      <!-- The fileinput-button span is used to style the file input field as button --> 
      <span class="btn btn-success fileinput-button"> 
       <i class="glyphicon glyphicon-plus"></i> 
       <span>Add files...</span> 
       <input type="file" name="files" value="" required="required"> 
      </span> 
      <button type="submit" class="btn btn-primary start"> 
       <i class="glyphicon glyphicon-upload"></i> 
       <span>Start upload</span> 
      </button> 
      <button type="reset" class="btn btn-warning cancel"> 
       <i class="glyphicon glyphicon-ban-circle"></i> 
       <span>Cancel upload</span> 
      </button> 
      <button type="button" class="btn btn-danger delete"> 
       <i class="glyphicon glyphicon-trash"></i> 
       <span>Delete</span> 
      </button> 
      <input type="checkbox" class="toggle" value=""> 
      <!-- The global file processing state --> 
      <span class="fileupload-process"></span> 
     </div> 
     <!-- The global progress state --> 
     <div class="col-lg-5 fileupload-progress fade"> 
      <!-- The global progress bar --> 
      <div class="progress progress-striped active" role="progressbar" aria-valuemin="0" aria-valuemax="100"> 
       <div class="progress-bar progress-bar-success" style="width:0%;"></div> 
      </div> 
      <!-- The extended global progress state --> 
      <div class="progress-extended">&nbsp;</div> 
     </div> 
    </div> 
    <!-- The table listing the files available for upload/download --> 
    <table role="presentation" class="table table-striped"><tbody class="files"></tbody></table> 
</form>** 

这是我的服务器端的python脚本:

class UploadHandler2(webapp.RequestHandler): 

    def PrintWithCarriageReturn(s): 
    sys.stdout.write('\r' + s) 
    sys.stdout.flush() 
    def post(self): 
form = cgi.FieldStorage(keep_blank_values = 1) 
    print form.keys() 
    fileitem = form['files'] 
if fileitem.filename: 
     filename = os.path.basename(fileitem.filename)** 

可有人请指教一下这段代码有错吗?由于

回答

1

您使用的Web应用程序来处理您的请求,它看起来像你的cgi.FieldStorage未接收到数据,所以没有“文件”表单中的对象,因此KeyError异常。

对于web应用程序,你可以做:

def post(self): 
    fileitem = self.request.POST.get('files', None) 

    fileblob = fileitem.file.read() 
    filename = fileitem.filename 
    mimetype = fileitem.type 

(具有相应的错误检查无,当然)。

+0

@codegeek能够解决这个问题,但现在有以下错误消息 OSERROR:[错误2]没有这样的文件或目录。的FileItem = self.request.POST.get( '文件',无) fileblob = fileitem.file.read() \t文件名= fileitem.filename \t \t \t服务= get_authenticated_service2() \t媒体= MediaFileUpload (文件名,CHUNKSIZE = CHUNKSIZE,可恢复=真) \t的#if不media.mimetype(): \t媒体= MediaFileUpload(文件名,DEFAULT_MIMETYPE,可恢复=真) \t请求= service.objects()插入(桶= bucket_name,name = object_name,media_body = media)。请指教。谢谢 – user3112567

相关问题