如何在Azure Blob Storage上传时用file.getContentType()设置Content-Type
解决方案
你需要调用BlobClient带BlobUploadOptions参数的重载upload方法,在上传选项中显式指定Blob的HTTP头Content-Type值,即可覆盖默认的application/octet-stream配置。
修改后代码示例:
import com.azure.storage.blob.options.BlobUploadOptions; import com.azure.storage.blob.models.BlobHttpHeaders; public void uploadToContainer(BlobClient blobClient, MultipartFile file) { try { // 配置Blob的HTTP头,设置从MultipartFile读取的Content-Type BlobHttpHeaders blobHttpHeaders = new BlobHttpHeaders() .setContentType(file.getContentType()); // 构造上传参数,绑定文件流、文件长度和自定义HTTP头 BlobUploadOptions uploadOptions = new BlobUploadOptions(file.getInputStream(), file.getSize()) .setHeaders(blobHttpHeaders); // 执行带自定义配置的上传 blobClient.upload(uploadOptions); } catch (Exception e) { //TODO: 优化异常处理逻辑 e.printStackTrace(); } }
补充注意事项:
- 部分场景下
MultipartFile.getContentType()可能返回空值,建议加兜底逻辑,比如默认赋值application/octet-stream,或根据文件后缀名二次校验匹配Content-Type,避免空指针异常 - 如果需要支持覆盖同名Blob,可在
upload方法传入第二个参数true,即blobClient.upload(uploadOptions, true),该参数为覆盖开关,设为true即可覆盖已存在的同名Blob
内容的提问来源于stack exchange,提问作者Max Torre Schau
相关产品推荐
相关产品推荐

