如何从节点 JS 向 spring 引导发出多部分请求?
How to make a multipart request from node JS to spring boot?
我有一个节点 js 后端需要将文件发送到 spring 启动应用程序。
文件是本地的uploads/testsheet.xlsx.
这是使用 form-data npm 模块和 Axios 上传文件的代码。
const formData = new FormData()
formData.append("file", fs.createReadStream("uploads/testsheet.xlsx"));
formData.append("status", status);
const path = `/endpoint`
const auth = {
username: username,
password: password
}
const url = `${baseUrl}${path}`
const response = await sendRequest(url, auth, "POST", formData, null, null, null)
//sendRequest Code -
try {
const response = await axios({
method,
url,
data,
params,
headers,
auth,
config,
})
return response
} catch (err) {
console.log(`Fetch Error: => ${method}:${url} => ${err.message || err.response}`)
return err.response ? { error: err.response.data.message } : { error: err.message }
}
Springboot端有如下代码-
@PostMapping("/endpoint")
public StatusResponse update(@RequestParam("file") MultipartFile file, @RequestParam("status") String status){
boolean response = transactionService.update(file, status);
return statusResponse;
}
在 spring 引导端,我不断收到此错误 -
org.springframework.web.multipart.MultipartException: Current request is not a multipart request
从邮递员发送时,一切正常。!!!
如何成功发送多部分文件?
您应该使用 formData
对象提供的 .getHeaders()
函数,以便正确设置多部分表单边界,例如:
const res = await axios.post(url, formData, {
headers: formData.getHeaders()
});
我有一个节点 js 后端需要将文件发送到 spring 启动应用程序。
文件是本地的uploads/testsheet.xlsx.
这是使用 form-data npm 模块和 Axios 上传文件的代码。
const formData = new FormData()
formData.append("file", fs.createReadStream("uploads/testsheet.xlsx"));
formData.append("status", status);
const path = `/endpoint`
const auth = {
username: username,
password: password
}
const url = `${baseUrl}${path}`
const response = await sendRequest(url, auth, "POST", formData, null, null, null)
//sendRequest Code -
try {
const response = await axios({
method,
url,
data,
params,
headers,
auth,
config,
})
return response
} catch (err) {
console.log(`Fetch Error: => ${method}:${url} => ${err.message || err.response}`)
return err.response ? { error: err.response.data.message } : { error: err.message }
}
Springboot端有如下代码-
@PostMapping("/endpoint")
public StatusResponse update(@RequestParam("file") MultipartFile file, @RequestParam("status") String status){
boolean response = transactionService.update(file, status);
return statusResponse;
}
在 spring 引导端,我不断收到此错误 -
org.springframework.web.multipart.MultipartException: Current request is not a multipart request
从邮递员发送时,一切正常。!!!
如何成功发送多部分文件?
您应该使用 formData
对象提供的 .getHeaders()
函数,以便正确设置多部分表单边界,例如:
const res = await axios.post(url, formData, {
headers: formData.getHeaders()
});