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

时间:2014-11-19 16:18:40

标签: google-app-engine python-2.7 google-cloud-storage

我正在使用此代码将图片上传到云端存储:

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

如何在将图像保存到云存储中之前检查图像的大小和类型?

&GT;

1 个答案:

答案 0 :(得分:2)

如果将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')