How to use axios.js instead of request.js to get data as a buffer All In One

发布时间 2023-04-26 23:21:06作者: xgqfrms

How to use axios.js instead of request.js to get data as a buffer All In One

如何使用 axios.js 代替 request.js 获取数据作为缓冲区

question

const fs = require("fs");
var path = require("path");
const { exit } = require("process");

// request
const request = require("request");
// const request = require("request-promise-native");

const log = console.log;

var folder = path.resolve(__dirname, '../pdf');
// log('folder', folder);
if (!fs.existsSync(folder)) {
  fs.mkdirSync(folder);
}

async function downloadPDF(url, filename) {
  log('? pdf downloading ...');
  // ✅
  const pdfBuffer = await request.get({
    uri: url,
    encoding: null,
    // encoding: 'utf-8',
  });
  fs.writeFileSync(filename, pdfBuffer);
  log('✅ pdf finished!');
  // exit 0;
}

const url = 'https://cs193p.sites.stanford.edu/sites/g/files/sbiybj16636/files/media/file/l1.pdf';
const filename = folder + '/cs193p-2021-l1.pdf';

log('filename =', filename);
downloadPDF(url, filename);

error

const fs = require("fs");
var path = require("path");
const { exit } = require("process");

// axios
const axios = require("axios");

// const request = require("request");
// const request = require("request-promise-native");

const log = console.log;

var folder = path.resolve(__dirname, '../pdf');

// log('folder', folder);

if (!fs.existsSync(folder)) {
  fs.mkdirSync(folder);
}


async function downloadPDF(url, filename) {
  log('? pdf downloading ...');
  axios({
    method: 'get',
    url,
    responseType: 'stream',
    // responseType: 'arraybuffer',
    // responseType: 'document',
  })
  .then((response) => {
    console.log(`response`, response.data)
    // ❌
    // response.data.pipe(fs.createWriteStream(filename))
    // response.data.pipe((pdfBuffer) => fs.writeFileSync(filename, pdfBuffer))
    let pdfBuffer = response.data;
    fs.writeFileSync(filename, pdfBuffer);
    // log('✅ pdf finished!');
  });
  // const pdfBuffer = await request.get({
  //   uri: url,
  //   encoding: null,
  //   // encoding: 'utf-8',
  // });
  // fs.writeFileSync(filename, pdfBuffer);
  // log('✅ pdf finished!');
  // exit 0;
}

const url = 'https://cs193p.sites.stanford.edu/sites/g/files/sbiybj16636/files/media/file/l1.pdf';
const filename = folder + '/cs193p-2021-l1.pdf';


log('filename =', filename);

downloadPDF(url, filename);


/* 

https://www.cnblogs.com/xgqfrms/p/16073509.html

https://www.npmjs.com/package/request ❌ This package has been deprecated

const request = require('request');
request('http://www.google.com', function (error, response, body) {
  console.error('error:', error); // Print the error if one occurred
  console.log('statusCode:', response && response.statusCode); // Print the response status code if a response was received
  console.log('body:', body); // Print the HTML for the Google homepage.
});

https://www.npmjs.com/package/axios

// GET request for remote image in node.js
axios({
  method: 'get',
  url: 'https://bit.ly/2mTM3nY',
  responseType: 'stream'
})
.then(function (response) {
  response.data.pipe(fs.createWriteStream('ada_lovelace.jpg'))
});

*/

solution


demos

(? 反爬虫测试!打击盗版⚠️)如果你看到这个信息, 说明这是一篇剽窃的文章,请访问 https://www.cnblogs.com/xgqfrms/ 查看原创文章!

refs



©xgqfrms 2012-2021

www.cnblogs.com/xgqfrms 发布文章使用:只允许注册用户才可以访问!

原创文章,版权所有©️xgqfrms, 禁止转载 ?️,侵权必究⚠️!