How to set contenttype on azure blob storage with nodejs
Asked Answered
G

2

17

I've got a nodejs server, am using the azure-storage module and am trying to upload a wav file to azure blob storage.

I'm trying to set the contentType on the blob to 'audio/wav' but it is showing up in storage as 'application/octet-stream'. Code is:

 upload: function (id, buffer, mimeType, callback) {
    self = this;
    var size = buffer.length;
    var stream = streamifier.createReadStream(buffer);
    var options = { contentType: 'audio/wav' };
    self.blobService.createBlockBlobFromStream(self.containerName, id, stream, size, options,  function (error, result, response) {
        if (error) {
            callback(error);
        }
        callback(null);
    });
}

Any ideas as to what I'm doing wrong?

Gwenny answered 9/7, 2016 at 15:5 Comment(0)
H
8

According the comments in source code at Github, the option architecture has changed, to define the contentType, please try to use following code snippet:

var options = {contentSettings:{contentType:'audio/wav'}}

Any further concern, please feel free to let me know.

Heeled answered 11/7, 2016 at 2:43 Comment(1)
This is no longer accurate. See @BigDaddy's answer for updated syntax. Would suggest answer is updated with way to find this answer in future iterations as it seems to change over revisions.Madigan
S
26

It has changed again, according the source code, the upload can expect a BlockBlobUploadOptions, with an optional blobHTTPHeaders object. This gives you the possibility to set http headers to set for the blob when requested. Too bad, none of the sample goes into that much details what to set when uploading blobs.

This worked for me

const blobOptions = { blobHTTPHeaders: { blobContentType: 'text/plain' } };
const uploadBlobResponse = await blockBlobClient.upload(ascii, ascii.length, blobOptions);
Sitra answered 30/11, 2019 at 20:10 Comment(0)
H
8

According the comments in source code at Github, the option architecture has changed, to define the contentType, please try to use following code snippet:

var options = {contentSettings:{contentType:'audio/wav'}}

Any further concern, please feel free to let me know.

Heeled answered 11/7, 2016 at 2:43 Comment(1)
This is no longer accurate. See @BigDaddy's answer for updated syntax. Would suggest answer is updated with way to find this answer in future iterations as it seems to change over revisions.Madigan

© 2022 - 2024 — McMap. All rights reserved.