【发布时间】:2020-10-06 17:03:59
【问题描述】:
我正在尝试使用“标题”、“描述”等其他字段保存上传的文件。 我可以使用邮递员保存数据,但我无法使用 Redux 从 Reacjs 表单中保存数据。
这是我的后端接收数据的方式:
const department = req.body.department;
const title = req.body.title;
const description = req.body.description;
const file = req.files.file;
我可以从邮递员那里保存但不能反应形式。
这是我的反应形式:
<form onSubmit={(e) => onSubmit(e)} encType='multipart/form-data'> ... some fields ... </form/
这是我的反应状态和提交表单数据:
const [file, setFile] = useState('');
const [filename, setFilename] = useState('Choose file...');
const [bodyData, setBodyData] = useState({
title: '',
department: '',
});
const { title, department } = bodyData;
const onChange = (e) =>
setBodyData({ ...bodyData, [e.target.name]: e.target.value });
这是我的 Redux
// Create document file for specific patient
export const addFile = (form, id) => async (dispatch) => {
console.log(form.bodyData);
try {
const config = {
headers: { 'Content-Type': 'application/json' },
};
const res = await axios.put(
`/api/document/file/${id}`,
(form.bodyData, form.formData),
config
);
dispatch({
type: ADD_DOCUMENT_FILE,
payload: res.data,
});
dispatch(setAlert('Successfully Uploaded Patient Document', 'success'));
} catch (err) {
const errors = err.response.data.errors;
if (errors) {
errors.forEach((error) => dispatch(setAlert(error.msg, 'danger')));
}
dispatch({
type: DOCUMENT_FILE_ERROR,
payload: { msg: err.response.statusText, status: err.response.status },
});
}
};
const onChangeFile = (e) => {
setFile(e.target.files[0]);
setFilename(e.target.files[0].name);
};
const onSubmit = async (e) => {
e.preventDefault();
const formData = new FormData();
formData.append('file', file);
const collect = { formData, bodyData };
addFile(collect, match.params.id);
};
【问题讨论】:
-
如果你包含了你的
onSubmit函数可能会有用 -
如果你能帮助我,我正在寻求帮助。
标签: node.js reactjs mongodb redux mern