我正在form-data
上传正文中的文件。使用ajax
它工作正常,但当我尝试在redux-saga
中执行相同操作时,它不起作用并失败。我做错了什么?
在ajax中,
let upload = ajax.post(PathHelper.apiPath + '/create/text').field('file', file);
upload.end((err, response) => {
if (err) {
console.log('Error Encountered', err);
}
if (response) {
const imageResponse = response.body;
console.log('imageresponse: ', imageResponse);
}
});
这是我的传奇代码:
export function* fetchText(text) {
const formData = new FormData();
formData.append('file', text.data);
console.log('formData: ', formData);
try {
const options = {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
body: formData
};
const response = yield call(fetchJson, PathHelper.apiPath + '/create/text', options);
console.log('response: ', response);
} catch (err) {
console.log('Error saving your image', err);
}
}
答案 0 :(得分:0)
当我尝试在redux-saga中执行相同操作时,它不起作用并且失败
Redux-saga
本身是关于执行异步操作,对某些redux
事件触发,所以首先,可能省略put
操作 - 通常saga拦截request
- 就像操作和操作完成后创建success
操作。在这种情况下,应该有redux
- reducer,它将接受API调用结果并将其应用于UI组件上。
其次,上传文件需要包含enctype="multipart/form-data"
的实时HTML表单,并且FormData
对象应附加到原始表单。详情请见http://researchhubs.com/post/computing/javascript/upload-files-with-ajax.html