我试图转换下面的代码是使用请求模块axios模块发送POST请求。
请求模块编码:
const imageFile = fs.createReadStream('image.jpeg');
const imgName = "image" + ".jpeg";
var options = {
'method': 'POST',
'url': url,
'headers': {
'Content-Type': 'application/json',
'Cache-Control': 'no-cache',
'Accept': 'application/json'
},
formData: {
'image': {
'value': imageFile,
'options': {
'filename': imgName,
'contentType': null
}
}
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log("SUCCESS");
});
字符串
上面的代码工作正常,图像通过请求模块成功发布。但是当我将其转换为axios时,我得到了一个500错误。(AxiosError:Request failed with status code 500)
axios模块代码:
const FormData = require('form-data')
const imageFile = fs.createReadStream('image.jpeg');
const imgName = "image" + ".jpeg";
const bodyFormData = new FormData();
bodyFormData.append("image['value']", imageFile);
bodyFormData.append("image['options']['filename']", imgName)
// bodyFormData.append("image['options']['contentType']", null)
console.log(bodyFormData)
const formHeaders = bodyFormData.getHeaders();
axios.post(url, bodyFormData, {
headers: {
...formHeaders,
'Cache-Control': 'no-cache',
'Accept': 'application/json',
}
}).then(function (response) {
console.log('SUCCESS');
}).catch(function (error) {
throw new Error(error);
});
型
有人能发现我在这里做错了什么吗?
除了使用form-data之外,还有其他方法可以使用axios发布图像吗?
2条答案
按热度按时间3df52oht1#
请参阅FormData#append()的文档。您可以提供额外的数据,如文件名作为第三个 * 选项 * 参数
字符串
在幕后,
request()
使用完全相同的form-data
库执行非常类似的操作。dkqlctbz2#
在laravel 10项目中,vue 3出现了同样的错误。
字符串
代码示例在这里,Employee.vue
型
pageController.phpclass,<?php
型
API.phphere <?php
型
上面的egsamples产生了相同的错误,问题的根源是语法错误。我们可以像下面这样修复它,
型