【发布时间】:2021-12-29 09:37:26
【问题描述】:
我们有一个网站,前端是 React,后端是 python。我正在尝试创建一个 python 后端(使用 Flask),用户在其中上传文件,python 将其上传到 Google Drive。我找到了通过 API 将文件上传到 Google Drive 的代码:
file_metadata = {
'name': filename,
'parents': [folder_id]
}
media = MediaFileUpload(uploaded_file,
mimetype='application/msword',
resumable=True)
file = service.files().create(body=file_metadata,
media_body=media,
fields='id').execute()
此代码适用于 upload_file 是磁盘上的路径。但是,我想将文件上传到 Google,而不必先将其保存到磁盘(因为它会占用空间,之后我们必须将其删除)。我尝试在从 Flask 请求对象获取文件时直接传递文件。
uploaded_file = request.files['file']
然后我收到消息“预期的 str、字节或 os.PathLike 对象,而不是 FileStorage”。我试过了
uploaded_file = request.files['file'].read()
以字节为单位获取文件。然后我收到消息“'utf-8' codec can't decode byte 0xd0 in position 0: invalid continuation byte”。根据我的阅读,这意味着编码不是“utf-8”而是其他编码,但我们无法事先知道用户将上传的文件将采用什么编码,我也找不到找到它的方法。除了将文件保存到磁盘并在上传到 Google 驱动器后明确删除之外,还有什么建议?
【问题讨论】: