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

使用Axios将CSV上传至Azure Blob Storage时遭遇403禁止错误

解决Azure Blob上传403禁止错误的方法

核心问题分析

你的代码存在两个关键错误导致403:

  1. 错误使用FormData:Azure Blob Storage的Put Blob接口接受原始文件内容,不需要用FormData包装,multipart/form-data格式会被服务端拒绝。
  2. 头部配置冲突:FormData生成的Content-Type会覆盖你需要的文件类型,且手动设置的Content-Length可能和实际文件大小不符。

修正后的代码

const fs = require('fs');
const path = require('path');
const axios = require('axios');

const BlobUriWithSASToken = 'https://myContainerName.blob.core.windows.net/folder1/folder2/folder3/folder4/mytestfile.csv?sv=<SAS Token>';
const filePath = path.join(__dirname, '/mytestfile.csv');

// 获取文件准确大小(可选,Axios也可自动计算)
const fileStats = fs.statSync(filePath);
const fileSize = fileStats.size;

const request_config = {
  headers: {
    'x-ms-blob-type': 'BlockBlob',
    'Content-Type': 'text/csv', // 可根据文件类型调整,也可用application/octet-stream
    'Content-Length': fileSize // 可选,手动设置更精准
  },
};

try {
  const response = await axios.put(
    BlobUriWithSASToken,
    fs.createReadStream(filePath), // 直接传递文件流
    request_config,
  );
  console.log('上传成功,状态码:', response.status);
} catch (err) {
  console.error('上传失败:', err.response?.status, err.response?.statusText);
}

额外检查项

  • SAS Token权限验证:确保SAS Token包含Write(w)权限,资源类型覆盖Blob(b),且当前时间在Token有效期内。
  • Blob路径正确性:确认URL中的容器名、文件夹路径、文件名完全正确,无拼写错误。
  • 网络环境:如果在企业网络下,检查是否有防火墙或代理拦截了请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 23:22:11