【问题标题】:Converting IFormFile to Stream set content type to application/octet-stream将 IFormFile 转换为 Stream 将内容类型设置为 application/octet-stream
【发布时间】:2020-08-01 16:55:41
【问题描述】:

我想将图像文件上传到 Azure Blob 容器。我正在使用.net core webapi post方法上传图片。上传成功但内容类型无效,将原来的image/jpeg类型转换为application/octet-stream

[HttpPost]
public async Task<string> Post(IFormFile files)
{
    BlobClient blobClient = _containerClient.GetBlobClient(files.FileName);
    await blobClient.UploadAsync(files.OpenReadStream());
}

任何人都可以帮助我如何上传保持原始内容类型的图像。

提前致谢。

【问题讨论】:

  • 我记得前段时间看到一个问题,它谈到了在 asp.net 核心中使用文件名(和扩展名)获取文件的内容类型(现在无法找到它,抱歉)。请看那个。一旦你有了,请看这个:stackoverflow.com/questions/59945376/….
  • 居然找到了一个单独的mime类型链接:dotnetcoretutorials.com/2018/08/14/…。 HTH。
  • @GauravMantri 我可以使用 IFormFile 获得原始的 mime 类型。但这里的问题是当我将它上传到 azure blob 存储时,它显示为application/octet-stream
  • 在这种情况下,请查看此链接:stackoverflow.com/questions/59945376/…

标签: c# azure asp.net-core azure-blob-storage


【解决方案1】:

如果要在上传文件到Azure blob时设置content-type,请参考以下代码

// I use the sdk Azure.Storage.Blobs
[HttpPost]
public async Task<string> Post(IFormFile file)
{
    var connectionString = "the account connection string";
            BlobServiceClient blobServiceClient = new BlobServiceClient(connectionString);
            BlobContainerClient containerClient =blobServiceClient.GetBlobContainerClient("test");
            await containerClient.CreateIfNotExistsAsync();
            BlobClient blobClient = containerClient.GetBlobClient(file.FileName);
            BlobHttpHeaders httpHeaders = new BlobHttpHeaders() { 
               ContentType=file.ContentType 
            };

            await blobClient.UploadAsync(file.OpenReadStream(), httpHeaders);

            return "OK";
}

测试(我在 Postman 中测试)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-09
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2018-10-05
    • 2015-07-01
    • 2018-10-27
    • 1970-01-01
    相关资源
    最近更新 更多