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

上传图片至Backblaze B2时报错Error: connect ECONNREFUSED 127.0.0.1:80

问题原因与修复方案

核心错误点

  • 调用b2.uploadFile时uploadUrl参数传值错误:getUploadUrl接口返回的上传地址存储在uploadUrl.data.uploadUrl字段,你错误传入了uploadUrl.data.bucketId,将存储桶ID当作上传地址传入后,SDK无法识别合法远程地址,默认请求本地80端口,直接触发连接拒绝报错。
  • 没有为异步方法b2.uploadFile添加await关键字,拿到的返回值是Promise对象而非实际上传结果。

额外说明

你当前的base64转Buffer逻辑完全符合backblaze-b2SDK的参数要求,data字段支持传入Buffer类型,这部分不是报错原因,无需调整。

修正后的代码

const B2 = require('backblaze-b2');
const fs = require('fs');

export const uploadImage = async (req, res) => {
  try {
    const b2 = new B2({
      accountId: process.env.BACKBLAZE_ACCOUNT_ID,
      applicationKey: process.env.BACKBLAZE_APPLICATION_MASTER_KEY,
    });

    await b2.authorize();

    const { image } = req.body;

    if (!image) return res.status(400).send('No image found!');

    // base64转Buffer逻辑正确,无需修改
    const base64Data = Buffer.from(
      image.replace(/^data:image\/\w+;base64,/,""),
      'base64'
    );

    const uploadUrlRes = await b2.getUploadUrl({
      bucketId: process.env.BACKBLAZE_BUCKET_ID,
    });

    // 修正uploadUrl参数,添加await
    const uploadRes = await b2.uploadFile({
      uploadUrl: uploadUrlRes.data.uploadUrl,
      uploadAuthToken: uploadUrlRes.data.authorizationToken,
      fileName: 'Pepe',
      data: base64Data,
      onUploadProgress: (e) => null,
    });

    console.log(uploadRes);
    res.send(uploadRes);
  } catch (err) {
    console.log('Upload error: ', err);
    res.status(500).send('Upload failed');
  }
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 22:54:04