上传时如何获取图像类型和大小?谷歌应用引擎

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中如何获取图像的大小和类型以通过表单发送?

如何使用 PHP 和 GD 获取图像资源大小(以字节为单位)?

js 如何获取上传文件的大小

如何在 JavaScript 中获取 gif 图像的大小

如何在 hasura graphql 引擎上上传文件或图像

如何在上传到服务器之前减小图像文件大小