在我的项目中,设置是:
我正在创建一个 API,它将在资源服务器上保存数据。因此,我必须先将文件上传到我的中继服务器。在中继服务器中,我使用 multer 解析多部分表单数据,然后将文件发送到我的资源服务器
const multer = require('multer')
const axios = require("axios");
const upload = multer();
router.post('/file', upload.single('featureData'), function (req, res, next) {
const requestData = new FormData()
requestData.append('featureData', req.file.buffer, {
filename: req.file.originalname,
encoding: req.file.encoding,
mimeType: req.file.mimeType
})
// sending file to resource server
axios.post(process.env.HOST + '/file', requestData, {
method: 'post',
// headers: {...requestData.getHeaders(), 'Content-Length': requestData.getLengthSync()}
})
.then(function (response) {
console.log("file upload successful;")
return void res.status(200).json("got file");
})
.catch(function (error) {
console.log(error)
// return void res.status(error.response.status).json(error.response.data);
}
)
})
在我的资源服务器中,我遇到两个问题:
app.use(bodyParser.raw({
limit: '50mb',
extended: true
}));
app.use(bodyParser.json({
limit: '50mb',
extended: true
}));
app.use(bodyParser.text({
limit: '50mb',
extended: true
}));
app.use(bodyParser.urlencoded({
limit: '50mb',
extended: true
}));
JSON.parse(JSON.stringify(req.body))
我的资源服务器中的控制器:
const multer = require('multer')
const fs = require('fs')
const storage = multer.diskStorage({
destination: './public/data/files/',
limits: { fileSize: 1000000000 }
// filename: function (req, file, cb) {
// cb(null, Date.now() + '.json') //Appending .jpg
// }
});
const upload = multer(storage)
const router = express.Router();
router.post('/file', upload.any(), function (req, res) {
...
});
我实际上想做的是从资源服务器中的请求对象获取文件,然后将文件保存在文件系统中。我不明白我做错了什么。有人可以帮助我吗?
您的资源服务器中可能有拼写错误,
const upload = multer({ storage });