📜  如何从 Node.js 服务器获取图像?(1)

📅  最后修改于: 2023-12-03 15:08:14.384000             🧑  作者: Mango

如何从 Node.js 服务器获取图像?

在 Node.js 中,可以使用 HTTP/HTTPS 模块从服务器获取图像。HTTP/HTTPS 模块是 Node.js 的标准模块,用于发送 HTTP/HTTPS 请求和处理响应。

HTTP 模块

下面是通过 HTTP 模块获取图像的代码示例:

const http = require('http');
const fs = require('fs');

http.get('http://example.com/image.png', (res) => {
  const { statusCode } = res;
  if (statusCode !== 200) {
    console.error(`请求失败,状态码为 ${statusCode}`);
    res.resume();
    return;
  }

  res.setEncoding('binary');
  let rawData = '';
  res.on('data', (chunk) => {
    rawData += chunk;
  });

  res.on('end', () => {
    fs.writeFile('image.png', rawData, 'binary', (err) => {
      if (err) throw err;
      console.log('图片已保存!');
    });
  });
}).on('error', (err) => {
  console.error(`请求失败,错误信息:${err.message}`);
});

上述代码通过 HTTP 模块向远程服务器资源发出 GET 请求,获取图片数据,并通过 Node.js 的文件系统模块保存图片数据。

HTTPS 模块

如果需要通过 HTTPS 获取图像,可以使用 HTTPS 模块。HTTPS 模块使用的是安全连接,数据传输过程是加密的。

下面是通过 HTTPS 模块获取图像的代码示例:

const https = require('https');
const fs = require('fs');

https.get('https://example.com/image.png', (res) => {
  const { statusCode } = res;
  if (statusCode !== 200) {
    console.error(`请求失败,状态码为 ${statusCode}`);
    res.resume();
    return;
  }

  res.setEncoding('binary');
  let rawData = '';
  res.on('data', (chunk) => {
    rawData += chunk;
  });

  res.on('end', () => {
    fs.writeFile('image.png', rawData, 'binary', (err) => {
      if (err) throw err;
      console.log('图片已保存!');
    });
  });
}).on('error', (err) => {
  console.error(`请求失败,错误信息:${err.message}`);
});
总结

通过 HTTP/HTTPS 模块可以方便地从远程服务器获取图像数据,并保存到本地文件系统。当然,以上示例仅针对获取静态图像,如果需要获取动态图像或其它类型的资源,代码需做出适当调整。