Nodejs require 远程地址

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nodejs require 远程地址相关的知识,希望对你有一定的参考价值。

参考技术A 在node.js中,require调用是同步的,因此无法加载不在文件系统上的文件(即来自外部URL)。

nodejs从远程服务器调整大小并保存图像

【中文标题】nodejs从远程服务器调整大小并保存图像【英文标题】:nodejs resize and save image from remote server 【发布时间】:2018-01-07 23:24:15 【问题描述】:

node js 调整大小并从远程服务器保存图像。

嗨, 如何在不保存本地然后保存的情况下调整图像大小。 当我运行以下代码时,出现错误:“错误:输入缓冲区包含不支持的图像格式” 代码:

var fs = require('fs');
var request = require('request');
var sharp = require('sharp');

function getImage()

request('https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png', function (err, res, body) 

var binary = Buffer.from(body.toString(), 'base64');   

sharp(binary).resize(198, 110).toFile('test.jpg', (err, info ) => 
   
      console.log('err: ', err);
      console.log('info: ', info);

  );      
);

【问题讨论】:

【参考方案1】:

我发现解决了我的问题:

var resizer = sharp().resize(198, 110).toFile('test.jpg', (err, info) =>  
    console.log('err: ', err);
    console.log('info: ', info);
  );    
  request('https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png').pipe(resizer);

【讨论】:

【参考方案2】:

如果您可以确保https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png 返回图像,您可以尝试将响应直接通过管道传输到sharp,而不是将响应转换为base64 格式和处理。

var resize = sharp(binary).resize(198, 110);
resize.on('error', function() 
  //handle error
);
resize.on('finish', function() 
  // done
);
request('https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png')
.pipe(process);

更新:

删除了.toFile('test.jpg'); 部分

【讨论】:

感谢您的回答,我解决了我的问题,代码:var resizer = sharp().resize(198, 110).toFile('test.jpg', (err, info) => console.log('err: ', err); console.log('info: ', info); );请求('google.com/images/branding/googlelogo/2x/…; @MichaelFedorov,删除.toFile('test.jpg', (err, info) => console.log('err: ', err); console.log('info: ', info); )。如果您只打算使用管道,那就没有必要了。

以上是关于Nodejs require 远程地址的主要内容,如果未能解决你的问题,请参考以下文章

electronjs - 远程访问nodejs

无法连接到远程 redis 主机 [nodeJS]

nodejs从远程服务器调整大小并保存图像

nodejs即时聊天

一个NodeJS写的基于MVC的服务器

nodejs - 根据用户地址不同 返回不同数据