我正在尝试将json对象发送feedData
到服务器。该对象内部有一个文件对象。
feedData = {
'title' : 'some title',
'type' : 1,
'feedBody' : {
'image' : File Object {lastModified : xxxx, name : 'image.jpg', type: 'image/jpg', ... }
}
}
return fetch(`/api/feeds/${feedId}/create`, {
method: 'POST',
body: JSON.stringify(feedData),
headers: {
'Authorization': getTokenHeader(token),
},
})
在我的路线中,
method: 'POST',
path: '/api/feeds/{feed}/create',
config: {
payload: {
output: 'stream',
parse: true,
allow: ['application/json', 'multipart/form-data', 'image/jpeg', 'application/pdf', 'application/x-www-form-urlencoded'],
maxBytes: 1024 * 1024 * 100,
timeout: false
},
handler: (req, res) => {
const params = { token: req.auth.token, ...req.params };
const payload = req.payload;
console.log('HAPI ', payload);
},
auth: {
strategy: 'jwt-strict',
mode: 'required'
}
}
我回来了一个错误
http://localhost:3000/api/feeds/feed/create 415 (Unsupported Media Type)
我究竟做错了什么?
以下工作,
在前端:-
const request = new XMLHttpRequest();
const formData = _getFileFormData(file);
request.open('POST', url);
request.setRequestHeader('authorization', getTokenHeader(token));
request.send(formData);
在后端:
method: 'POST',
path: '/api/feeds/{feed}/create',
config: {
handler: function (req, res) {
const pre = preFilter(req.pre);
const token = req.auth.token;
const params = { ...req.params, ...pre.params, token: token };
const payload = req.payload;
return UploadAction.with(req, res).actionUploadToFeed(params, payload);
},
payload: {
output: 'stream',
parse: true,
allow: 'multipart/form-data',
maxBytes: 1024 * 1024 * 100,
timeout: false,
},
validate: {
params: {
...FeedsController.getValidator(FeedsController.PARAM_CLIENT),
...FeedsController.getValidator(FeedsController.PARAM_FEED),
},
},
pre: [
...TransformParam.toLowerCase(FeedsController.PARAM_CLIENT),
...TransformParam.toLowerCase(FeedsController.PARAM_FEED),
],
auth: {
strategy: 'jwt-strict',
mode: 'required',
},
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句