如何在写入文件到谷歌云存储时设置MIME类型

2 投票
2 回答
2763 浏览
提问于 2025-04-18 05:23

我正在把一个wav和一个mp3文件保存到谷歌云存储,而不是使用blobstore,具体是按照这个说明来做的。不过在这个过程中,文件的MIME类型丢失了,结果变成了binary/octet-stream,这让我的应用程序出现了问题。

  1. 我该如何在写入文件时设置MIME类型呢?

  2. 有没有办法根据文件类型自动设置MIME类型?比如,如果是mp3文件就保存为audio/mpeg,如果是wav文件就保存为audio/wav?

2 个回答

0

BlobInfo类里面有一个叫“content_type”的字段,你可以用它来设置这个对象的文件类型。

2

这里有一个例子:

def gcs_write_blob(dyn, blob):
    """ update google cloud storage dyn entity """

    gcs_file_name = '/%s/%s' % (default_bucket, dyn.filename)

    content_type = mimetypes.guess_type(dyn.filename)[0]
    if dyn.extension in ['js', 'css']:
        content_type += b'; charset=utf-8'

    with gcs.open(gcs_file_name, 'w', content_type=content_type,
                  options={b'x-goog-acl': b'public-read'}) as f:
        f.write(blob)

    return gcs_file_name

这个例子来自这个链接: https://gist.github.com/voscausa/9541133

撰写回答