大文件(超过〜2 Mb)上传 - 引发错误“无法在<multivaluedict:{} =”“>”找到关键'data_file':“Google App Engine / Python </multivaluedict:>

时间:2013-08-06 07:24:53

标签: javascript python django google-app-engine file-upload

快速注释 - 我正在尝试使用GAE上传随机大小的文件以保存在数据存储区。

这是基本代码:

  • HTML代码

    <iframe name="upload_iframe" src="" style="display:none;"></iframe>
    <form method="post" enctype="multipart/form-data" action="/">
      <input type="hidden" name="MAX_FILE_SIZE" value="100000" />
      <input name="data_file" size="30000" type="file" /> <input type="submit" name="submit" value="Upload" />
    </form>
    
  • Python / Django代码

     def upload_files(request):
        if request.method == 'POST':
           logging.info(request.FILES)
           logging.info(request.FILES['data_file'])
    
        return HttpResponse('File Uploaded Successfully..')
    

测试场景

  • 如果我尝试上传〜1 Mb文件,其工作正常..返回File Uploaded Successfully

  • 如果尝试上传〜2 Mb或更多,则会引发MultiValueDictKeyError: "Key 'data_file' not found in <MultiValueDict: {}>": - 无法在这里找错我在哪里或使用错误的approch ..

我也提到了这个SO Question ..但它不适合我。

请建议你考虑一下..

1 个答案:

答案 0 :(得分:0)

Django将小文件上传加载到内存中,同时将大量上传文件临时保存到磁盘。 GAE不允许访问文件系统,因此您必须将GAE的blobstore作为存储引擎。另请参阅this question on SO