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

时间:2014-03-02 21:05:51

标签: php google-app-engine

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

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

2 个答案:

答案 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中。当然,如果您经常需要此文件,这是唯一的理由。