cyb*_*bat 18 javascript node.js express
我想读一个远程图像并显示它.我可以保存文件但不能正确显示代码.理想情况下,我只想在不进行处理的情况下正确传递文件 - 不确定是否需要tmp文件步骤.此代码不显示任何内容 - 没有错误.我也尝试了res.pipe(响应).
var url = 'http://proxy.boxresizer.com/convert?resize=50x50&source=' + filename
var request = http.get(url, function(response) {
var tmp = path.join(require('os').tmpDir(), filename);
var outstream = require('fs').createWriteStream(tmp);
response.pipe(outstream);
response.on('end', function() {
res.set('Content-Type', 'image/jpg');
res.pipe(outstream);
res.end();
});
});
Run Code Online (Sandbox Code Playgroud)
cyb*_*bat 28
好吧,我仍然想知道如何完成上述工作,但我在请求模块的一行中解决了我的问题!
var url = 'http://proxy.boxresizer.com/convert?resize=50x50&source=' + filename
require('request').get(url).pipe(res); // res being Express response
Run Code Online (Sandbox Code Playgroud)
ABa*_*bin 11
由于request已弃用,您也可以node-fetch像这样使用:
app.get("/", (req, res) => {
fetch(actualUrl).then(actual => {
actual.headers.forEach((v, n) => res.setHeader(n, v));
actual.body.pipe(res);
});
});
Run Code Online (Sandbox Code Playgroud)
这似乎对我有用,使用fetch()Node 18 中包含的标准,这与 有点不同node-fetch,请参阅 github.com/node-fetch/node-fetch#bodybody:
app.get("/", (req, res) => {
fetch(url).then(({ body, headers }) => {
body.pipeTo(
new WritableStream({
start() {
headers.forEach((v, n) => res.setHeader(n, v));
},
write(chunk) {
res.write(chunk);
},
close() {
res.end();
},
})
);
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16925 次 |
| 最近记录: |