上传图片至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
相关产品推荐
相关产品推荐

