2

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

'对 Google Cloud Storage 的请求超时。', DownloadError('无法获取 URL: https://storage.googleapis.com/parse_scratch/TTM150 MSM63 04504.jpg',)

请帮忙。


针对 Benson 的问题,答案(连同我一直在使用的代码)如下:

单个文件大小:

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

代码:

它是做什么的:它打开存储在我的 Django 框架的静态文件下的图像的 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()
4

1 回答 1

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()
于 2013-09-21T15:12:06.847 回答