我知道上传到GAE的文件必须存储在GCS中 - 但是我希望将数据存储在BLOB或会话中以便立即处理和丢弃?
有可能吗?临时文件存储在哪里?我可以访问$ _FILES全局的内容,直到当前请求超时或完成???
答案 0 :(得分:1)
我没有使用PHP。在Python中,您可以将多部分表单数据POST到您自己的处理程序,而无需使用blobstore或GCS。您可以在处理程序中读取数据(临时StringIO对象)。
这仅适用于小文件!我认为没有理由这也适用于PHP。
Python example.py:
import webapp2
import mimetypes
class FileUpload(webapp2.RequestHandler):
def get(self):
form = """
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>File Upload</title>
</head>
<body>
<form action="/file_upload" enctype="multipart/form-data" method="post">
<div><input type="file" name="file" /></div>
<div><input type="submit" value="Upload"></div>
</form>
</body>
</html>
"""
self.response.headers[b'Content-Type'] = b'text/html'
self.response.write(form)
def post(self):
file_upload = self.request.POST.get("file", None)
name = file_upload.filename
data = file_upload.file.read()
self.response.headers[b'Content-Type'] = mimetypes.guess_type(name)[0]
self.response.write(data)
路由:webapp2.Route(r'/file_upload', handler='example.FileUpload')
答案 1 :(得分:0)
BlobStore没有GCS优势,而且价格更贵。 Memcache可能随时丢失。
我建议您将文件上传到Google云端存储。下次需要时,将其从GSC读取为字符串,并将其存储在Memcache中。当然,如果您经常需要此文件,这是唯一的理由。