canvas toDataUrl上传到gae

时间:2013-08-11 22:40:18

标签: jquery python google-app-engine

我将画布转换为数据网址并将其发布到GAE。该帖子在localhost上工作,但在部署时返回400。日志中没有错误,似乎请求甚至没有出现在我的上传处理程序中。

这是发布帖子的jquery代码

    $('#submitButton').click(function() {
        stage.toDataURL({
            callback: function(dataUrl) {
                $.ajax({
                    type: "POST",
                    url: "{{ upload_url|safe }}",
                    data: {file: dataUrl}
                }).done(function( respond ) {
                    alert(respond);
                });
            }
        });
    });

这是处理帖子的python代码

类UploadHandler(blobstore_handlers.BlobstoreUploadHandler):   def post(self):       logging.info('上传图片')       self.response.headers [“Access-Control-Allow-Origin”] =“*”

  try:
      data = self.request.get('file')
      data_to_64 = re.search(r'base64,(.*)', data).group(1)
      decoded = data_to_64.decode('base64')

      logging.info('Create the file')
      file_name = files.blobstore.create(mime_type='image/png')

      logging.info('Open the file and write to it')
      with files.open(file_name, 'a') as f:
          f.write(decoded)

      logging.info('Finalize the file. Do this before attempting to read it.')
      files.finalize(file_name)

      key = files.blobstore.get_blob_key(file_name)

      url = '/serve/%s' % key
      self.response.out.write('{ "url": "' + url + '" }')
  except Exception, e:
      logging.error(e)

任何想法出了什么问题?

1 个答案:

答案 0 :(得分:0)

我明白了。我只是看着400而不是反应机构。该机构表示端点不支持我发送的内容类型。

如果您完成本教程https://developers.google.com/appengine/docs/python/blobstore/

使用blobstore.create_upload_url('/ upload')创建上传网址

创建的端点仅支持内容类型mulitpart / form-data

我使用jquery发送数据的内容类型为application / x-www-form-urlencoded。

所以我的修复不是使用blobstore.create_upload_url('/ upload'),只是直接发布到/ upload