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

如何在API调用中发送Base64编码的图片文件内容字符串?

问题根因分析

你之前的三种尝试均不符合接口参数要求,对应错误原因如下:

  • 文档示例里的URL仅为参数值格式示意,该接口实际要求file字段传入文件的Base64编码字符串,而非公网可访问的文件链接,传入链接会被接口判定为非法文件内容,触发类型不支持报错。
  • 直接生成的Base64字符串如果放在请求URL的查询参数中传递,会超出HTTP客户端的URI长度限制,触发过长报错,Base64内容必须放在POST请求的JSON请求体中。
  • 你写的Node.js代码存在两个核心错误:一是请求头声明为application/json但实际传入formData格式的请求体,格式不匹配导致接口无法解析参数;二是直接传递文件流而非Base64编码后的字符串,不符合参数要求。
正确操作步骤

Postman操作方法

  • 第一步:将需要上传的文件转换为Base64编码,注意要完全去掉Base64前缀(比如data:image/png;base64,这段内容),只保留后面的纯编码内容。
  • 第二步:打开Postman新建POST请求,填入接口地址https://api2.questblue.com/fax/send。
  • 第三步:配置请求头:
    • 新增Content-type,值为application/json
    • 新增Security-Key,值为你的接口私钥
    • 新增Authorization,认证类型选Basic Auth,填入你的API用户名和密码,Postman会自动生成符合要求的认证头
  • 第四步:切换到Body选项卡,选择raw格式,数据类型选JSON,填入如下结构的请求体:
{
  "did_from": 3332224444,
  "did_to": 1112223333,
  "file": "你生成的无前缀的Base64字符串"
}
  • 第五步:点击发送即可完成请求。

Node.js 正确代码示例

var fs = require('fs');
var request = require('request');

// 读取本地文件并直接转换为无前缀的Base64编码
var fileBase64 = fs.readFileSync('C:/Users/zee/folder/testfax.jpg', {encoding: 'base64'});

var options = {
  'method': 'POST',
  'url': 'https://api2.questblue.com/fax/send',
  'headers': {
    'Content-type': 'application/json',
    'Security-Key': '你的接口私钥',
    // 生成Basic认证头,替换为你自己的API用户名和密码
    'Authorization': 'Basic ' + Buffer.from('api_username:api_password').toString('base64')
  },
  // 按要求传入JSON格式请求体
  body: JSON.stringify({
    "did_from": 3332224444,
    "did_to": 1112223333,
    "file": fileBase64
  })
};

request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});
注意事项
  • 接口限制最大上传文件大小为5Mb,Base64编码后大小会比原文件大1/3左右,建议原文件大小控制在3.7Mb以内,避免编码后超出大小限制。
  • 所有支持的文件格式转换逻辑完全一致,不需要针对格式调整Base64的处理方式,仅需确保去掉编码前缀即可。
  • 若仍出现文件类型不支持报错,可检查原文件后缀是否在接口支持的格式列表内,排除文件扩展名伪造的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 21:36:03