📅  最后修改于: 2023-12-03 15:08:14.384000             🧑  作者: Mango
在 Node.js 中,可以使用 HTTP/HTTPS 模块从服务器获取图像。HTTP/HTTPS 模块是 Node.js 的标准模块,用于发送 HTTP/HTTPS 请求和处理响应。
下面是通过 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 模块获取图像的代码示例:
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 模块可以方便地从远程服务器获取图像数据,并保存到本地文件系统。当然,以上示例仅针对获取静态图像,如果需要获取动态图像或其它类型的资源,代码需做出适当调整。