谷歌关闭中的文件上传功能?

时间:2012-05-22 11:35:55

标签: python html ajax google-app-engine google-closure

我正在谷歌应用引擎上创建一个项目。在这里,我试图将文件上传到blobstore。 我有一个包含多个表单的html文件,其中每个表单都有一个文件上传按钮

<input type="file">

现在,只要用户使用此按钮选择文件,文件就必须开始上传到GAE blobstore 我有python代码可以做这个上传的东西,但我无法将我的后端(python)代码链接到我浏览过的文件。 此外,由于有多种形式,因此不得刷新页面。

我在google关闭中找到了一个页面刷新的解决方案(使用弹出窗口),但在我的项目中并不是这样。我相信封闭库没有别的办法。

我正在尝试使用ajax调用,但是我对ajax的了解非常有限,这使我无法获得dsired结果。

使用JQUERY不是一种选择。

我希望我的问题很明确,如果没有,请退回。

非常感谢任何帮助。

由于

2 个答案:

答案 0 :(得分:2)

Google Closure提供了一个IframeIo类,可以发布您的文件(无需刷新页面),此处提供的文档,http://closure-library.googlecode.com/svn/docs/class_goog_net_IframeIo.html

我们在IframeIo上实现了一个包装器(在BSD许可下可用),以便在用户选择文件时向用户显示文件上载输入和帖子到URL。来源,https://code.google.com/p/prestans/source/browse/trunk/client/closure/ui/IframeFileUpload.js

处理成功/失败代码有点棘手,具体取决于您从Blobstore文件上传处理程序返回的内容。

答案 1 :(得分:1)

我使用的是使用输入/文件控制的onchange。 onChange返回控件和mime-type。在onchange中,您可以访问控件的filelist数组以获取文件名。 使用文件名,您可以使用FileReader加载实际数据。可以使用xhr帖子(并将其转换为base64)上传到服务器。类似的东西:

function onChange(control, mimetype) {
var f = control.files;
if (f.length) {
  var reader = new FileReader;
  reader.onload = function() {
    // Post using xhr
  }
  reader.readAsBinaryString(f)
}

请不要所有浏览器都没有FileReader对象...(Chrome确实支持它!)