【问题标题】:How to upload image to Azure Blob Storage with proper content type如何使用正确的内容类型将图像上传到 Azure Blob 存储
【发布时间】:2020-08-01 16:57:33
【问题描述】:

我已经阅读了 MS 提供的将文件/图像上传到 Blob 存储的大部分文档。现在已经两天了,我被困住了。我找不到合适的方法来上传具有正确内容类型的图像。文件/图像已上传,但上传到 BLOB 存储后的内容类型更改为“应用程序/八位字节流”。我希望它是 'image/png' 或 'image/jpg' 等。

samplesC# 代码但它们没有用。 我正在尝试使用 node.js

使用的 SDK 库:@azure/storage-blob

参考资料:

示例代码:

const bc = new BlockBlobClient(
    rhcConfig.STORAGE_CONNECTION_STRING,
    rhcConfig.CONTAINER_NAME,
    `IMAGES/${fileName}`
  );

  // let result = await bc.uploadFile(_file);
  // console.log(result);

  const buff = Buffer.from(file, "base64");
  const stream = getStream(buff);
  const streamLength = buff.length;
  await bc.uploadStream(stream, streamLength, 1, { httpHeaderOptions });

httpHeaderOptions:

const httpHeaders = {
    "x-ms-blob-cache-control": "1000",
    "x-ms-blob-content-type": "image/png",
    "x-ms-blob-content-md5": `${md5Hash}`,
    "x-ms-blob-content-encoding": "compress",
    "x-ms-blob-content-language": "en",
    "x-ms-blob-content-disposition": "multipart/form-data",
  };
  const httpHeaderOptions = { blobHTTPHeaders: httpHeaders };

感谢社区!!

【问题讨论】:

    标签: node.js file-upload azure-blob-storage


    【解决方案1】:

    假设你的httpHeaderOptions格式不正确,你可以参考这个接口描述:BlobHTTPHeaders,下面是我的测试代码。

    const blobServiceClient = BlobServiceClient.fromConnectionString(connectionstr)
    
    const containerClient=blobServiceClient.getContainerClient('test')
    const blobclient=containerClient.getBlockBlobClient('test.jpg')
    let fileStream = fs.createReadStream('E:\\dog.jpg');
    const blobOptions = { blobHTTPHeaders: { blobContentType: 'image/jpg' } };
    blobclient.uploadStream(fileStream,undefined ,undefined ,blobOptions)
    

    【讨论】:

    • 谢谢!我今天做了这个,正要分享它。我没有发现 MS 文档更容易实现。这正是我所做的,并且正在发挥作用。
    • @Debadatta Meher,如果这可行,您可以接受它作为答案。
    【解决方案2】:

    我遇到了类似的问题,并且像原始发帖人一样发现 micosoft 文档和示例非常糟糕。我原以为上传图像是一件相当常见的事情,但他们的示例都没有显示使用更新的存储 api 更改内容类型。无论如何,我的实现与 George Chen 的类似,如下`

    BlobClient blobClient = photoContainer.GetBlobClient(fileName); blobClient.UploadAsync(f.InputStream, new BlobHttpHeaders { ContentType = "image/jpeg" }).`

    【讨论】:

      猜你喜欢
      • 2020-01-25
      • 2020-05-02
      • 2018-12-17
      • 1970-01-01
      • 1970-01-01
      • 2022-11-03
      • 2020-01-09
      • 2014-07-22
      • 2020-02-23
      相关资源
      最近更新 更多