当我尝试从 Postman(表单数据)向服务器上的 API 发送 POST 请求时收到以下错误,该 API 应该将文件上传到我的 AWS S3 存储桶:
Error: connect ECONNREFUSED 162.255.119.39:443
这是图片上传路由的代码
const express = require('express');
const router = express.Router();
const upload = require('../services/image-upload.js');
const singleUpload = upload.single('image');
router.post('/', (req, res) => {
singleUpload(req, res, (err) => {
return res.json({'imageUrl': req.file.location});
});
});
module.exports = router;
这是将 POST 请求发送到 AWS 的 API 代码:
const aws = require('aws-sdk');
const multer = require('multer');
const multerS3 = require('multer-s3');
aws.config.update({
secretAccessKey: 'secret-access-key',
accessKeyId: 'access-key-id',
region: 'us-east-1'
});
const s3 = new aws.S3();
const upload = multer({
storage: multerS3({
s3: s3,
bucket: 'my-bucket',
metadata: function (req, file, cb) {
cb(null, {fieldName:'Testing_meta_data!'});
},
key: function (req, file, cb) {
cb(null, Date.now().toString());
}
})
});
module.exports = upload;
起初我以为是因为我阻止了公共访问我的存储桶,因为在我解除限制后,请求通过了。但情况似乎不再如此,因为我仍然收到错误消息。
作为参考,我在一个实际的托管服务器上,我没有使用本地主机。
答案 0 :(得分:0)
基于评论。
问题是邮递员试图使用 HTTPS(端口 443)进行连接,而应用程序不支持该连接。端口 80 (HTTP) 上的连接按预期工作。
答案 1 :(得分:0)
econnrefused 意味着没有服务在端口中运行,https 默认端口是 443。如果您的系统设置为使用任何其他端口进行 https,则在 url 中指定该端口
https://ip:port/resource
https://162.255.119.39:8443/something
如果您使用的是主机名,则主机名:端口
https://www.reqres.in:443/api/users?page=1
如果您的系统不使用 https,则将其从 url 中删除:
http://162.255.119.39:8443/something
这里的 www.requres.in 是主机名