javascript - 通过表单数据 axios 上传文件的问题
问题描述
我正在尝试上传服务器文件,但它给了我未选择文件的响应。做与 axios 和 form-data 文档相同的事情,但仍然有错误。
let form = new FormData();
form.append('file', fs.createReadStream('./files/50.jpg'));
const config = {
headers: {
...form.getHeaders(),
Authorization: token
}
}
axios.post(url, form, config)
.then(response => console.log(response.data, response.status))
.catch(err => console.error(err.config, err.response.data))
回应是
{
url: 'https://example.com',
method: 'post',
data: FormData {
_overheadLength: 148,
_valueLength: 0,
_valuesToMeasure: [ [ReadStream] ],
writable: false,
readable: true,
dataSize: 0,
maxDataSize: 2097152,
pauseStreams: true,
_released: true,
_streams: [],
_currentStream: null,
_insideLoop: false,
_pendingNext: false,
_boundary: '--------------------------897634953482711246524185',
_events: [Object: null prototype] { error: [Function: handleStreamError] },
_eventsCount: 1
},
headers: {
Accept: 'application/json, text/plain, */*',
'Content-Type': 'multipart/form-data; boundary=--------------------------897634953482711246524185',
Authorization: 'Bearer token',
'User-Agent': 'axios/0.19.2'
},
transformRequest: [ [Function: transformRequest] ],
transformResponse: [ [Function: transformResponse] ],
timeout: 0,
adapter: [Function: httpAdapter],
xsrfCookieName: 'XSRF-TOKEN',
xsrfHeaderName: 'X-XSRF-TOKEN',
maxContentLength: -1,
validateStatus: [Function: validateStatus]
} { errors: [ { code: 65536, message: 'Must upload one file' } ] }
请帮助我如何上传文件,错误在哪里?或者,也许您可以提供一些替代方法来解决这种情况。
解决方案
谢谢大家,但我在 Postman.Code -> NodeJs - Axios 中找到了答案
var axios = require('axios');
var FormData = require('form-data');
var fs = require('fs');
var data = new FormData();
data.append('file', fs.createReadStream('/Users/anton/Downloads/50 (1).jpg'));
var config = {
method: 'post',
url: 'https://...',
headers: {
'Authorization': 'Bearer ...',
'Content-Type': 'multipart/form-data',
...data.getHeaders()
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
推荐阅读
- c++ - bool(T::* ...) 做什么?
- spring - 元素 [spring.liquibase.username] 未绑定
- c# - C# 的 Linux NetStandard 2.0 参考
- ios - 从 TableView 中调用了两次 TableViewCell 数据
- ios - 在添加约束时使用 xib 调整大小问题
- python - 根据列表自定义字符串拆分
- python - 从 df 中删除 2 个值之一的实例很少的列
- php - WooCommerce - 将产品简短描述添加到已完成的订单电子邮件中
- python - 如何组合 pandas df 以便可以合并具有置换 col1 和 col2 值的行,其中仅包含一个组合并汇总计数列
- ajax - 控制器参数为空