21xrx.com
2024-09-20 06:05:36 Friday
登录
文章检索 我的文章 写文章
Node.js 如何下载图片
2023-06-24 06:24:33 深夜i     --     --
Node js 下载 图片

Node.js 作为一种后端开发语言,在处理图片方面也提供了很好的支持。在 Node.js 中,可以使用很多不同的方式来下载图片。本文将介绍一些常用的方法。

一、使用 Node.js 自带的 HTTP 模块

Node.js 自带的 HTTP 模块提供了向服务器发送 HTTP 请求的功能。使用 HTTP 模块可以下载图片并保存到本地。代码如下:


const http = require('http');

const fs = require('fs');

const imageUrl = 'http://example.com/image.jpg';

const imagePath = './image.jpg';

http.get(imageUrl, (res) => {

 const fileStream = fs.createWriteStream(imagePath);

 res.pipe(fileStream);

 fileStream.on('finish', () => {

  console.log('Image downloaded successfully.');

 });

}).on('error', (error) => {

 console.error('Error:', error);

});

上述代码中,`http.get()` 方法用于发送 GET 请求,获取远程图片,并返回一个 `response` 对象。使用 `fs.createWriteStream()` 方法在本地文件系统中创建一个文件流,并把这个文件流 pipe 到 `response` 对象中。当 `response` 对象被写入完成时,执行 `fileStream.on('finish')` 方法。

二、使用 Request 模块

Request 是一个简单的HTTP请求模块,非常适合 Node.js 的应用场景。下面是使用 Request 模块下载图片的代码:


const request = require('request');

const fs = require('fs');

const imageUrl = 'http://example.com/image.jpg';

const imagePath = './image.jpg';

request.get(imageUrl)

 .on('error', (error) => {

  console.error('Error:', error);

 })

 .pipe(fs.createWriteStream(imagePath))

 .on('finish', () => {

  console.log('Image downloaded successfully.');

 });

在上面的代码中,我们使用 `request.get()` 方法向服务器发送请求,并返回一个 `response` 对象。同样使用 `fs.createWriteStream()` 方法在本地文件系统中创建一个文件流,并把 `response` 对象 pipe 到这个文件流中。当 `response` 对象被写入完成时,执行 `fileStream.on('finish')` 方法。

三、使用 Axios 模块

Axios 是一款基于 Promise 的 HTTP 请求库,可以在浏览器和 Node.js 中使用。它支持所有现代化的浏览器,也支持 Node.js 的版本。下面是使用 Axios 模块下载图片的代码:


const axios = require('axios');

const fs = require('fs');

const imageUrl = 'http://example.com/image.jpg';

const imagePath = './image.jpg';

axios(

 method: 'get')

 .then((response) => {

  response.data.pipe(fs.createWriteStream(imagePath));

  response.data.on('close', () => {

   console.log('Image downloaded successfully.');

  });

 })

 .catch((error) => {

  console.error('Error:', error);

 });

在上面的代码中,我们使用 Axios 模块的 `axios()` 方法向服务器发送请求。在请求对象中设置了 `responseType` 为 `stream`,表示响应对象以流的形式返回。使用 `response.data.pipe()` 方法,把响应数据传递给一个可写流。当响应数据被完全写入时,执行 `response.data.on('close')` 方法。

总结

本文介绍了在 Node.js 中下载图片的三种方法。分别使用了 Node.js 自带的 HTTP 模块、Request 模块以及 Axios 模块。这些方法都是通过 HTTP 请求获取图片,然后将其在本地文件系统中保存。不同的方法之间有些许差异,根据实际情况选择适合自己的方法即可。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复