3
修复 #2
修复 #2
@nickuraltsev 您能否分享有关支持服务器端上传流所需的任何其他文档?另外,如果我将数据流式传输到服务器是否意味着响应也必须流回?
顺便说一句,公关工作真的很棒,更新的测试和文档都很棒!
我不明白这是如何从 axios 实现的。我可以在 Node.js 上将 axios 与 form-data 一起使用吗?
这是一个示例,但它不起作用:
var FormData = require('form-data'),
axios = require('axios'),
fs = require('fs'),
data = new FormData();
data.append('something', 'something');
data.append('file', fs.createReadStream('myFile.md');
axios.post('http://localhost:12345/api', data, {headers: data.getHeaders()}).then(...).catch(...);
这不会将数据发送到服务器。该代码有什么问题?
提前致谢,威尔克
@wilk 代码对我来说看起来不错。您使用的是最新版本的 axios 吗?
嗯,对:我使用的是0.9.1版本。我认为它还不支持该功能,对吗?
@wilk 对的,它是在0.11.0中实现的
@nickuraltsev 是的,它正在使用 0.11.0,谢谢;)
我想这又被打破了。我收到错误:在结束后写入
如何为服务器上的流上传指定文件名?通常,当您从浏览器发送 HTML 文件时,它会有一个发送到服务器的文件名。
@jeffijoe我不认为这是一个问题,当您创建表单数据时,您可以将文件名作为另一个表单数据值发送formdata.append("filename",filename)
是的,但我认为为了尽可能地不可知,您需要以某种方式指定它,以便像 Busboy 这样的库来选择它
var FormData = require('form-data');
var axios = require('axios');
var form = new FormData();
form.append('bookid',id);
form.append('classes',classes);
form.append('data',fs.createReadStream(__dirname + `${file}`));
axios.defaults.headers.common = form.getHeaders();
axios.post(`${baseUrl}/outline/create`,form)
.then((response)=>{
console.log(response.data)
})
.catch(e=>{console.log(e)})
我尝试发布表单数据,但没有成功,因为内容长度
工作正常...使用最新版本进行了测试:
const form = new FormData();
form.append('file', fs.createReadStream(path));
const result = await this.client.post(`some/path`, form, {
headers: form.getHeaders(),
});