js-sdk icon indicating copy to clipboard operation
js-sdk copied to clipboard

Cannot get binary files when using the azure blob storage binding

Open marto83 opened this issue 8 months ago • 0 comments

Expected Behavior

Using the following code I would except to either receive a buffer or a base64 encoded string.

const result = await client.binding.send('filestore', 'get', null,  { blobName: filename });
    console.log(typeof result); // string
    const buffer = Buffer.from(result, 'base64'); 

Actual Behavior

What you actually get is a mangled string that is a binary stream converted to text and then parsed as JSON.

Steps to Reproduce the Problem

  1. Create a bindings.azure.blobstorage binding and set decodeBase64 to true.
  2. Upload a file where data is a Buffer
const base64Data = data.toString('base64');
    const meta = {
      blobName: fileName,
      "contentType"        : contentType ?? 'application/octet-stream',
      "contentDisposition" : "attachment",
      "cacheControl"       : "no-cache",
      "custom"             : "hello-world"
    };
    
    const response = await client.binding.send(Bindings.fileStore, 'create', base64Data, meta);
  1. Get the file back and save it to disk

marto83 avatar May 30 '24 14:05 marto83