如何确保在Python App Engine中复制blob时保留Blob元数据

时间:2012-11-01 19:12:50

标签: python google-app-engine python-2.7 blobstore

我正在将图像文件上传到服务器并调整其大小以节省数据存储区中的磁盘空间。我调整大小然后删除原始blob并仅保留blob的smallVersion的方法会删除所有元数据。有没有办法从原始blob复制Blob元数据并将其添加到新的较小版本?

def post(self):
    upload_files = self.get_uploads('file')
    blob_info = upload_files[0]
    if blob_info:
        img = images.Image(blob_key=blob_info)
        img.im_feeling_lucky()
        img.resize(width=600, height=800)
        smallVersion = img.execute_transforms(output_encoding=images.JPEG)
        file_name = files.blobstore.create(mime_type='image/jpeg')
        with files.open(file_name, 'a') as f:  
            f.write(smallVersion)
        files.finalize(file_name)
        blob_key = files.blobstore.get_blob_key(file_name)
        blobstore.delete(blob_info.key())
        blobCacheURL = images.get_serving_url(blob_key)

1 个答案:

答案 0 :(得分:1)

使用Files API创建blob时,可以设置上传的文件名:

file_name = files.blobstore.create(mime_type='image/png',_blobinfo_uploaded_filename=file_name_from_url)

我不知道在编写文件时可以设置的其他blob属性。您是否正在寻找mime_type旁边的其他属性?