Exemplo n.º 1
0
    def post(self, path):
        try:
            bucket = Bucket.get_bucket_by_name(self.aws_config, self.bucket_name)
            result = {}
            for key in self.request.files:
                for fileinfo in self.request.files[key]:
                    fname = fileinfo["filename"]
                    fActual, fExt = os.path.splitext(fname)
                    fType = self.TYPE_MAP[fExt.lower()]
                    logging.info("uploading %s - %s", fname, path)
                    s3KeyName = "{}/{}".format(path, fname) if path else fname
                    s3key = bucket.add(fileinfo["body"], key=s3KeyName)
                    result[key] = {"name": fname, "key": s3key}
                    if self.thumb_size:
                        img = Image.open(io.BytesIO(fileinfo["body"]))
                        img.thumbnail(self.thumb_size)
                        img_io = io.BytesIO()
                        img.save(img_io, fType)
                        img_io.seek(0)
                        s3ThumbKeyName = (
                            "{}/thumbnail/{}{}".format(path, fActual, fExt)
                            if path
                            else "thumbnail/{}{}".format(fActual, fExt)
                        )
                        thumb_key = bucket.add(img_io.read(), key=s3ThumbKeyName)
                        result[key]["thumb"] = thumb_key

            self.write({"result": result})
        except Exception as ex:
            logging.exception(path)
            self.write({"error": str(ex)})