上传时如何获取图像类型和大小?谷歌应用引擎
Posted
技术标签:
【中文标题】上传时如何获取图像类型和大小?谷歌应用引擎【英文标题】:How to get image Type and size when uploading it ? google app engine 【发布时间】:2015-01-17 06:12:39 【问题描述】:我正在使用此代码将图像上传到云存储:
class uploadImageTOCloudStorage(webapp2.RequestHandler):
def post(self):
image = self.request.get("file")
gcs_file=gcs.open(GCS_BUCKET_NAME+'testImage.png', 'w')
gcs_file.write(image.encod('utf-8'))
gcs_file.close()
self.response.write("succeed !")
还有这个表格发送图片:
<form action="http://myappId.appspot.com/test/uploadImage" method="post">
<input type="file" name="file" value='file'><br>
<input type="submit" value="Submit">
</form
如何在将图像保存到云存储之前检查图像的大小和类型?
>
【问题讨论】:
Python: Check if uploaded file is jpg 的可能重复项 【参考方案1】:如果将 enctype="multipart/form-data" 添加到表单元素,则可以使用图像数据通过如下代码实例化 Image 对象:
(特别注意提取和拆分 mime 类型以检测有效图像格式的方式,以及我们使用 google.appengine.api.images 类 Image 在使用构造函数后提取尺寸的事实并传递原始图像数据)
import webapp2
import google.appengine.api.images as images
class Uploader(webapp2.RequestHandler):
def post(self):
img_stream = self.request.get ('file')
mimetype = self.request.POST['file'].type
img_format = mimetype.split('/')[1]
if (img_format == 'jpeg' or 'jpg' or 'gif' or 'png' or 'bmp' or 'tiff' or 'ico' or 'webp'):
imageObj = images.Image (img_stream)
width = imageObj.width
height = imageObj.height
self.response.out.write ('<html><body>uploaded image is %s x %s [%s]</body></html>' % (width, height, img_format))
else:
self.response.out.write ('not valid format')
【讨论】:
谢谢你的回答,但是 self.request.POST['file'] 和 self.request.get('file') 有什么区别 啊,感谢您指出这一点。我应该解释一下:如果你阅读 webapp2.RequestHandler 的规范,你会看到 self.request 对象有几种访问请求参数的方法。 .get() 将从任何类型的请求中按名称获取,但 POST 数组专门用于 POST 请求数据。此外,.get() 将作为字符串抓取,而 the POST array will contain FieldStorage objects in the case of a file upload.以上是关于上传时如何获取图像类型和大小?谷歌应用引擎的主要内容,如果未能解决你的问题,请参考以下文章
在Cakephp 3.6中如何获取图像的大小和类型以通过表单发送?