[axios]添加对流的支持

2024-05-15 309 views
2

修复 #2

回答

2

@nickuraltsev 您能否分享有关支持服务器端上传流所需的任何其他文档?另外,如果我将数据流式传输到服务器是否意味着响应也必须流回?

顺便说一句,公关工作真的很棒,更新的测试和文档都很棒!

5

我不明白这是如何从 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(...);

这不会将数据发送到服务器。该代码有什么问题?

提前致谢,威尔克

9

@wilk 代码对我来说看起来不错。您使用的是最新版本的 axios 吗?

8

嗯,对:我使用的是0.9.1版本。我认为它还不支持该功能,对吗?

0

@wilk 对的,它是在0.11.0中实现的

9

@nickuraltsev 是的,它正在使用 0.11.0,谢谢;)

9

我想这又被打破了。我收到错误:在结束后写入

4

如何为服务器上的流上传指定文件名?通常,当您从浏览器发送 HTML 文件时,它会有一个发送到服务器的文件名。

6

@jeffijoe我不认为这是一个问题,当您创建表单数据时,您可以将文件名作为另一个表单数据值发送formdata.append("filename",filename)

5

是的,但我认为为了尽可能地不可知,您需要以某种方式指定它,以便像 Busboy 这样的库来选择它

2
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)})

我尝试发布表单数据,但没有成功,因为内容长度 图像

0

工作正常...使用最新版本进行了测试:

    const form = new FormData();
    form.append('file', fs.createReadStream(path));

    const result = await this.client.post(`some/path`, form, {
       headers: form.getHeaders(),
    });