python - 为什么图像属性没有方法文件名上传到 gcs?
问题描述
我正在尝试使用 python 烧瓶将图像上传到 gcs。我已经参考了谷歌提供的文档,https://cloud.google.com/appengine/docs/flexible/python/using-cloud-storage,但我收到了一个错误:-
AttributeError:“str”对象没有属性“文件名”
我已经精确地遵循了文档中的文档,但我仍然收到这些错误,我不知道为什么。
我的html表单:-
<form action="/register", method="POST" ,enctype="multipart/form-data">
<input type="file" , name="image" , placeholder="Image">
</form>
我的python烧瓶代码:-
#fetch user image
userImage = request.files["image"]
#upload userImage
#create storageclient
gcs = storage.Client.from_service_account_json("projectalpha24-e0c2991ff2c0.json")
#get storage bucket
bucket = gcs.get_bucket("projectalpha24.appspot.com")
#create a blob and upload file content
blob = bucket.blob(userImage.filename)
blob.upload_from_string(
userImage.read(),
content_type=userImage.content_type
)
我不确定发生了什么。任何帮助将不胜感激。
编辑:我已经编辑了代码。我已将从表单中获取图像的方式更改为 request.files["image"] 并再次遵循上述文档 1 次。现在我收到一个新错误:-
请求的 mimetype 是“application/x-www-form-urlencoded”而不是“multipart/form-data”,这意味着没有传输文件内容。要修复此错误,您应该在表单中提供 enctype="multipart/form-data"
虽然,正如您从我的表单代码中看到的那样,我确实在我的表单中包含了 enctype,但是,它给出了这个错误。
解决方案
您需要通过userImage = request.files.get("image")
. 有关更多信息,请参阅此链接。
推荐阅读
- python - 做简单低通滤波器时的Python数组怪异 - 输出为0
- node.js - 如何在 node.js 中使用 jwt.sign()
- javascript - 如何阻止比较两个数组项的“if”条件被先前比较的项满足?
- c# - C# CefSharp chromeBrowser 试图模拟按键和鼠标点击
- c++ - 通过使用具有受保护析构函数的父类型实例化基类创建的空闲内存
- project-reactor - 如何保护方法免受反应器中的并发调用。用户通过休息调用
- c - 定义一个函数来检查它是否是 C 中的完美正方形
- css - CSS滚动条不显示
- css - 我有一个按钮,我希望它与页脚完美定位
- java - 聚合,Firebase java