为什么图像属性没有要上传到 gcs 的方法文件名?



我正在尝试使用python-flask将图像上传到gcs。我参考了谷歌提供的文件,https://cloud.google.com/appengine/docs/flexible/python/using-cloud-storage,但我得到了一个错误:-

AttributeError:"str"对象没有属性"filename">

我已经准确地遵循了文档中的文档,但我仍然会出现这些错误,我不知道为什么。

我的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["图像"],并再次遵循上面提到的文档。现在我得到一个新的错误:-

请求的mimetype是";application/x-www-form-urlencoded";而不是";多部分/形式数据";这意味着没有传输任何文件内容。要修复此错误,您应该提供enctype=";多部分/形式数据";在您的表格中

虽然,正如你从我的表单代码中看到的,我确实在表单中包含了enctype,但它给出了这个错误。

您需要通过userImage = request.files.get("image")获取文件对象。有关详细信息,请参阅此链接。

相关内容

最新更新