【发布时间】:2019-07-25 11:35:23
【问题描述】:
我在通过帖子将groupId 传递给我的函数来处理它时遇到了一些麻烦,基本上我正在上传一张图片,但我需要通过 groupId 将它重命名为我的其他函数上的图片,我正在使用 react并表示这样做:
onFormSubmit = async (event) => {
event.preventDefault();
const { imageFile, currentGroupId } = this.state;
var formData = new FormData();
formData.append('groupImage', imageFile);
const config = {
headers: {
'content-type': 'multipart/form-data'
}
};
await api.post('/fileUpload/group', { currentGroupId }, formData, config );
}
我的路线:
router.post('/group', (req, res) => {
fileuploadmanager.uploadFile(req, res);
});
还有后端:
uploadFile(req, res) {
const { uploadsPath } = this.porperties;
const { currentGroupId } = req.body;//it prints but formData and config never comes here
console.log("GROUP: ", currentGroupId);
const storage = multer.diskStorage({
destination: uploadsPath,
filename: (req, file, cb) => {
cb(null, `${file.fieldname}-${Date.now()}${path.extname(file.originalname)}`);
},
});
const upload = multer({
storage,
limits: {
fileSize: 1000000,
},
fileFilter: (req, file, cb) => {
this.checkFileType(file, cb);
},
}).single('groupImage');
upload(req, res, (err) => {
if (err) {
console.log(err);
}
});
}
仅发送 formData 和 config 有效,但如果我将 groupId 添加到端点,则它不起作用。
我尝试在formData 中附加它的值,但我无法在后端获取它,所以现在我尝试将它作为 req.body 传递,它工作正常,但我的其他参数没有传递到后端。
如何将我的 groupId、formData 和配置传递到我的后端?
编辑: api 是用于指定我的后端 URL 的包装器。我正在使用axios
import axios from 'axios';
export default axios.create({
baseURL: process.env.REACT_APP_API_URL
});
参考文献:
【问题讨论】:
-
什么
api.post?我的意思是你在这里用什么?可能这个方法没有额外的参数。 -
这是一个 axios 类包装器,用于指定我的后端 URL,它可以工作。无论如何我用这个包装器更新了帖子。
-
首先,你需要做两件事:1)调试你的
this.state的imageFile和currentGroupId行; ... 2)在您的config属性集标题中,例如formData.getHeaders()。 -
接下来,在这里发布结果