如何上传文件并使用 Fetch API 包含 JSON 数据?
How can I upload file and also include JSON data with Fetch API?
祝您今天过得愉快。所以我正在使用 Fetch API 将文件上传到服务器,但我还想为我的后端包含一个字符串作为 JSON。但是我做不到。
现在这就是我的上传文件功能的样子。如果我只想上传一个文件而不包含 JSON:
这样的字符串,这将非常有效
const uploadFile = ( e ) => {
const uploadedFile = e.target.files[ 0 ];
const formData = new FormData();
formData.append( 'data', uploadedFile );
const rawResponse = await fetch( '/upload-file', {
method: 'POST',
body: formData
});
};
uploadFile();
使用 req.files.data
在我的 NodeJS 后端获取文件;
但是如果我包含一个字符串作为 JSON 并尝试上传文件,那么我的 NodeJS 后端会得到 undefined。这就是 string as JSON:
的样子
const uploadFile = ( e ) => {
const uploadedFile = e.target.files[ 0 ];
const formData = new FormData();
const str = 'from client';
formData.append( 'data', uploadedFile );
const rawResponse = await fetch( '/upload-file', {
method: 'POST',
body: {
file: formData,
str
}
});
};
uploadFile();
现在,如果我想在后端获取文件:
req.files.file
, 我得到 undefined
.
req.body
, 我得到 { 'object Object': '' }
.
req.files.data
,我得到 UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'data' of undefined
。
req.body.data
, 我得到 undefined
.
这里出了什么问题?
只需将值附加到 FormData 对象,就像您对文件所做的那样
formData.append( 'str', '["some JSON here"]' );
然后继续发送那个对象,body: formData
你将它附加到 FormData
,而不是正文
const uploadFile = ( e ) => {
const uploadedFile = e.target.files[ 0 ];
const formData = new FormData();
const str = 'from client';
formData.append( 'data', uploadedFile );
formData.append( 'str', str );
const rawResponse = await fetch( '/upload-file', {
method: 'POST',
body: formData
});
};
uploadFile();
祝您今天过得愉快。所以我正在使用 Fetch API 将文件上传到服务器,但我还想为我的后端包含一个字符串作为 JSON。但是我做不到。
现在这就是我的上传文件功能的样子。如果我只想上传一个文件而不包含 JSON:
这样的字符串,这将非常有效const uploadFile = ( e ) => {
const uploadedFile = e.target.files[ 0 ];
const formData = new FormData();
formData.append( 'data', uploadedFile );
const rawResponse = await fetch( '/upload-file', {
method: 'POST',
body: formData
});
};
uploadFile();
使用 req.files.data
在我的 NodeJS 后端获取文件;
但是如果我包含一个字符串作为 JSON 并尝试上传文件,那么我的 NodeJS 后端会得到 undefined。这就是 string as JSON:
的样子const uploadFile = ( e ) => {
const uploadedFile = e.target.files[ 0 ];
const formData = new FormData();
const str = 'from client';
formData.append( 'data', uploadedFile );
const rawResponse = await fetch( '/upload-file', {
method: 'POST',
body: {
file: formData,
str
}
});
};
uploadFile();
现在,如果我想在后端获取文件:
req.files.file
, 我得到 undefined
.
req.body
, 我得到 { 'object Object': '' }
.
req.files.data
,我得到 UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'data' of undefined
。
req.body.data
, 我得到 undefined
.
这里出了什么问题?
只需将值附加到 FormData 对象,就像您对文件所做的那样
formData.append( 'str', '["some JSON here"]' );
然后继续发送那个对象,body: formData
你将它附加到 FormData
,而不是正文
const uploadFile = ( e ) => {
const uploadedFile = e.target.files[ 0 ];
const formData = new FormData();
const str = 'from client';
formData.append( 'data', uploadedFile );
formData.append( 'str', str );
const rawResponse = await fetch( '/upload-file', {
method: 'POST',
body: formData
});
};
uploadFile();