gpt4 book ai didi

javascript - NodeJS 尝试使用 fs.createfilestream 内部的 URL

转载 作者:行者123 更新时间:2023-12-03 00:41:44 25 4
gpt4 key购买 nike

我正在尝试向我的 api 发送发布请求,该 api 运行良好(我可以发布文件,但不能通过网址发布),但现在我尝试通过网址发布。

这是我现在的代码,我删除了一些与问题无关或用于测试的行。

    request({
url: url + "gettoken"
, json: true
}, function (error, response, body) {
user = body;
var rs = fs.createReadStream(up.url);
var ws = request.post(url + "upload?token=" + `${user.token}&key=${user.key}&filename=${filename}`);
ws.on('drain', function () {
rs.resume();
});
rs.on('end', function () {
console.log(filename);
});
ws.on('error', function (err) {
console.error('cannot send file ' + err);
});
rs.pipe(ws);
})

谁能帮帮我。

最佳答案

因此,我们的想法是将位于 up.url 的文件上传到位于 url +“upload?...” 的另一台服务器。

由于 fs.createReadStream 旨在读取本地文件,而不是 URL,因此您需要可以从 URL 创建流的东西(或者更确切地说,检索该 URL 并流式传输响应)。

您还可以使用 request 来实现:

request({
url: url + "gettoken",
json: true
}, function (error, response, body) {
const user = body;
const rs = request.get(up.url);
const ws = request.post(url + "upload?token=" + `${user.token}&key=${user.key}&filename=${filename}`);

rs.on('end', function () {
console.log(filename);
});
ws.on('error', function (err) {
console.error('cannot send file ' + err);
});

rs.pipe(ws);
});

通常,文件上传通过 multipart/form-data 进行,但您的代码不建议在此处使用。如果是的话,代码将变成这样:

const ws = request.post(url + "upload?token=" + `${user.token}&key=${user.key}&filename=${filename}`, {
formData : {
the_file : rs
}
});
// no `rs.pipe(ws)`

关于javascript - NodeJS 尝试使用 fs.createfilestream 内部的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53430170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com