如何正确设置Azure Blob的ContentType?

时间:2018-02-01 14:34:31

标签: azure mime-types content-type azure-blob-storage azure-management-api

在我的Web API中,我使用以下代码创建blob:

        var container = Client.GetContainerReference(DefaultContainer);
        var blockBlob = container.GetBlockBlobReference(blobName);

        blockBlob.UploadFromStream(fileStream);

        blockBlob.Properties.ContentType = "video/mp4";
        blockBlob.SetProperties();

当从外部下载文件时,我需要 ContentType标头值为video/mp4

但是,当我使用外部链接下载该文件时,Azure不会添加相应的ContentType。 (它实际上没有附加任何内容。)

那么,我该如何实现呢?

2 个答案:

答案 0 :(得分:1)

在更新属性/元数据之前,您需要先获取属性/元数据,因此您的代码应为:

var container = Client.GetContainerReference(DefaultContainer);
var blockBlob = container.GetBlockBlobReference(blobName);
blockBlob.UploadFromStream(fileStream);

// Set the content type
blockBlob.FetchAttributes();
blockBlob.Properties.ContentType = "text/html";
blockBlob.SetProperties();

答案 1 :(得分:0)

如果未提供任何内容,则Azure Blob会降至“ application / octet-stream”的默认值。为了获得正确的模仿类型,这是我对烧瓶应用程序所做的:

@app.route('/', methods=['GET', 'POST'])
def upload_file():

    if request.method == 'POST':
        f = request.files['file']
        mime_type = f.content_type
        print (mime_type)
        print (type(f))
        try:
            #blob_service.create_blob_from_path(container, f, f.filename)
            blob_service.create_blob_from_stream(container, f.filename, f,
            content_settings=ContentSettings(content_type=mime_type))

mime_type已传递到ContentSettings,以获取上传到天蓝色blob的文件的当前mimetypes。