You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Azure客户端库上传文件到Blob Storage出现Content-Length错误求助

问题原因

@azure/storage-blob库的BlockBlobClient.upload()方法要求传入2个必填参数:第一个是要上传的二进制数据,第二个是数据的长度值。你当前代码仅传入了fs.readFileSync读取到的文件Buffer,没有传递长度参数,因此触发contentLength cannot be null or undefined报错。
另外你当前代码没有对异步的upload方法加await,最终打印的结果会是Promise对象而非上传响应。

解决方案

可任选以下任意一种方式修改:

方案1:补全upload方法的必填参数

修改上传相关代码如下:

// 读取文件获取Buffer
const fileBuffer = fs.readFileSync('demo.xml')
// 传入Buffer和Buffer长度,添加await处理异步逻辑
const uploadBlobResponse = await blockBlobClient.upload(fileBuffer, fileBuffer.length)
console.log(uploadBlobResponse)

方案2:使用封装好的uploadFile方法(更推荐)

SDK提供了直接读取本地文件上传的uploadFile方法,无需手动读文件、手动计算长度,使用更简便:

// 替换原有的读文件+upload逻辑即可
const uploadBlobResponse = await blockBlobClient.uploadFile('demo.xml')
console.log(uploadBlobResponse)

如果你的代码没有在async方法内,需要把上传逻辑包裹在async立即执行函数里才能使用await:

;(async function() {
  // 所有异步逻辑放在这里
  const uploadBlobResponse = await blockBlobClient.uploadFile('demo.xml')
  console.log(uploadBlobResponse)
})()

内容的提问来源于stack exchange,提问作者Mayank Patel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 06:36:05