gpt4 book ai didi

python - 如何使用 XmlHttpRequest 2.0 将 5 MB 的文件上传到 App Engine BlobStore?

转载 作者:太空宇宙 更新时间:2023-11-03 23:48:48 25 4
gpt4 key购买 nike

我们都知道,对于大多数输入/输出请求,App Engine 将您限制为 1 MB。但是使用最近的 BlobStore API,您可以通过 POST 到动态生成的 URL 来完整上传大文件。

根据示例,HTML 表单如下所示:

self.response.out.write('<html><body>')
self.response.out.write('<form action="%s" method="POST"
enctype="multipart/form-data">' % upload_url)
self.response.out.write("""Upload File:
<input type="file" name="file"><br>
<input type="submit" name="submit" value="Submit">
</form></body></html>""")

但是我们如何使用 HTML5 中引入的 JavaScript 技术异步执行此操作?这是我目前所拥有的片段:

xhr.open("POST", post_url); // the post URL given by App Engine
xhr.overrideMimeType('text/plain; charset=x-user-defined-binary');
xhr.setRequestHeader('Cache-Control', 'no-cache');
xhr.setRequestHeader('X-File-Name', file.fileName);

// After loading the binary data (last time we only read as base64 string)
// Tell xhr to start the upload
myBinaryDataReader.addEventListener("loadend", function(evt){
xhr.sendAsBinary(evt.target.result);
}, false);

// Initiate the binary reading on the file, when finished it will
// upload asynchronously
myBinaryDataReader.readAsBinaryString(file);

您会注意到,此技术将原始二进制文件作为 POST 正文发送。这很好,它不需要 BlobStore 最多 1 MB。在 Python 中,要读取文件,我只需使用:

img_data = self.request.body # got my image data now

但是,对于 BlobStore,我应该使用

upload_files = self.get_uploads('file')  # 'file' is file upload field in the form

但我没有使用输入类型=文件的 HTML 表单,我使用的是 XmlHttpRequest——我如何让 App Engine“认为”它是来自 HTML 表单的文件,因此“抓”文件数据?

我的代码,未经修改,导致错误

File "C:\Python26\lib\cgi.py", line 583, in keys
raise TypeError, "not indexable"
TypeError: not indexable

最佳答案

您可能想查看我关于上传到 blobstore 的博文(123)以及this recent cookbook post .

关于python - 如何使用 XmlHttpRequest 2.0 将 5 MB 的文件上传到 App Engine BlobStore?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3605548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com