繁体   English   中英

上传文件并存储在会话或数据库中

[英]Upload file and store in session or DB

我知道上传到GAE的文件必须存储在GCS中-但是,如果我希望将数据存储在BLOB或会话中以便立即处理和丢弃,该怎么办?

可能吗? 临时文件存储在哪里? 在当前请求超时或完成之前,我可以访问$ _FILES全局内容吗?

我没有使用PHP。 在Python中,您可以将多部分表单数据发布到自己的处理程序中,而无需使用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')

BlobStore与GCS相比没有优势,而且价格更高。 Memcache随时可能丢失。

我建议您将文件上传到Google Cloud Storage。 下次需要时,将其从GSC读取为字符串,并将其存储在Memcache中。 当然,这样做的唯一原因是,如果您经常需要此文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM