我已成功读取/写入文件(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()
答案 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()