这是我的API处理程序。
// Retrieve data.
const form = formidable({ multiples: true });
form.parse(request, async (err: any, fields: any, files: any) => {
if (!drupal) {
return response.status(500).send('Empty drupal handler.');
}
const { fieldName, webformId } = fields;
const file = files[fieldName];
if (fieldName && webformId && file) {
// Build api url.
const url = drupal.buildUrl(
`/webform_rest/${webformId}/upload/${fieldName}`
);
// Build file form data.
const body = new FormData();
body.append('file', file);
// Send file data.
if (file) {
const result = await drupal.fetch(url.toString(), {
method: 'POST',
headers: {
'Content-Type': 'application/octet-stream',
'Content-Disposition':
'file; filename="' + file.originalFilename + '"',
},
body,
withAuth: true,
});
const resultData = await result.json();
if (result.ok && 'fid' in resultData) {
return response.status(200).json(resultData.fid[0]['value']);
}
return response.status(500).send({ error: result.statusText });
}
}
});
我在这里得到了一个formData
。随后,我想将这个formData
中包含的文件发送到另一个API。
一切看起来都很好,除了在第二个API的另一边,我得到一个损坏的文件,无法打开和小字节大小。
我的代码有什么问题?
thx
1条答案
按热度按时间u3r8eeie1#
问题是,这里的
body.append('file', file);
文件变量不是File类型,它是文件的自定义表示,具有关于它的 meta信息。