我最近把我的项目从heroku移到了google cloud。 它是用flask写的,基本上是对上传的.docx文件做一些文本摘要(没什么花哨的)。由于他们的短暂文件系统,我能够在本地使用heroku上的文件。
有了google cloud,发现自己在尝试使用上传的文件和运行python函数时迷失了方向。
我得到的错误是:用open(self.file,'rb')作为文件。 FileNotFoundError: [Errno 2]没有这样的文件或目录:'。http:/storage.googleapis.com。...'
暂时把具体内容编辑出来,但当我在浏览器中打开链接时,会出现下载窗口。 我知道文件到了那里,因为我去google cloud,一切都在适当的 bucket里。
另外,有没有办法在python通过文件后立即从bucket中删除? 目前已经将生命周期设置为一天,但只是需要数据暂时跑过。
如果这些问题很傻,我很抱歉。 很新,正在努力学习。
谅谅
哦,这里是当前的代码
gcs = storage.Client()
user_file = request.files['file']
local = secure_filename(user_file.filename)
blob = bucket.blob(local)
blob.upload_from_string(user_file.read(),content_type=user_file.content_type)
this_file = f"http://storage.googleapis.com/{CLOUD_STORAGE_BUCKET}/{local}"
那么一个函数就应该打开这个文件。
返回一个public_url的文件名,以便处理和使用。
def open_file(self):
url = self.file
file = BytesIO(requests.get(url).content)
return docx.Document(file)