云存储python库仅在上传图像时出现问题

时间:2013-06-15 18:47:06

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

我已成功读取/写入文件(xls)到我使用在GAE上运行的App Engine App创建的存储桶。但是,当我尝试对图像文件执行相同操作时,它会出错:

'请求Google云端存储超时。',DownloadError('无法获取网址:https://storage.googleapis.com/parse_scratch/TTM150 MSM63 04504.jpg',)

请帮忙。


在回答Benson提出的问题时,答案(以及我一直在使用的代码)如下:

单个文件大小:

小于400 KB(有些小于100KB)和一个我上传到GCS的图像,我只是通过调用gcs.open(fname,'r')来尝试读取的是22KB。但是,我试图从同一个桶中读取的xls文件(使用相同的代码)是5 MB!

代码:

它做什么:它打开存储在我的Django Framework的静态文件下的图像的zip文件,逐个读取文件,并尝试使用gcs_write()在GCS上存储数据。类似的代码(没有通过zip文件,并尝试读取GCS中存储的图像也无法读取,生成相同的错误)。

    zip = zipfile.ZipFile(join(IMAGEPATH, f), 'r')

    for imgwpath in zip.namelist():
        if not (('.jpg' in imgwpath) or ('.jpeg' in imgwpath) or ('.gif' in imgwpath)):
            continue

        full_name = imgwpath.split('/')
        image_name = full_name[len(full_name)-1]

        data = zip.read(imgwpath)
        if '.jpg' or '.jpeg' in image_name:
            type = 'jpeg'
        elif '.gif' in image_name:
            type = 'gif'

        filename = BUCKET + image_name
        gcs_file = gcs.open(filename, 'w', content_type = 'image/jpeg')
        gcs_file.write(data)
        gcs_file.close()

1 个答案:

答案 0 :(得分:0)

刚遇到同样的问题,所以我想我会回答这个问题以防其他人遇到这个问题。

似乎是由于文件名中的空格。

在分配文件名时,我用下划线替换了空格,这似乎解决了这个问题:

    filename = BUCKET + image_name
    filename = filename.replace(" ", "_") 
    gcs_file = gcs.open(filename, 'w', content_type = 'image/jpeg')
    gcs_file.write(data)
    gcs_file.close()