How to use axios.js instead of request.js to get data as a buffer All In One
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
-
responseType: 'arraybuffer',
-
Buffer.from(response.data, 'binary');
const fs = require("fs");
var path = require("path");
const { exit } = require("process");
// axios
const axios = require("axios");
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: 'arraybuffer',
})
.then((response) => {
console.log(`response`, response.data)
// response <Buffer 25 50 44 46 2d 31 2e 34 0d 25 e2 e3 cf d3 0d 0a 35 35 20 30 20 6f 62 6a 0d 3c 3c 2f 4c 69 6e 65 61 72 69 7a 65 64 20 31 2f 4c 20 37 35 31 33 32 37 2f ... 751277 more bytes>
// ✅
let pdfBuffer = response.data;
// ✅ 多此一举呀
// let pdfBuffer = Buffer.from(response.data, 'binary');
fs.writeFileSync(filename, pdfBuffer);
log('✅ pdf finished!');
});
}
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);
Buffer.from
Node.js
https://nodejs.org/api/buffer.html#buffer
demos
(🐞 反爬虫测试!打击盗版⚠️)如果你看到这个信息, 说明这是一篇剽窃的文章,请访问 https://www.cnblogs.com/xgqfrms/ 查看原创文章!
refs
https://stackoverflow.com/questions/41846669/download-an-image-using-axios-and-convert-it-to-base64
©xgqfrms 2012-2021
www.cnblogs.com/xgqfrms 发布文章使用:只允许注册用户才可以访问!
原创文章,版权所有©️xgqfrms, 禁止转载 🈲️,侵权必究⚠️!
本文首发于博客园,作者:xgqfrms,原文链接:https://www.cnblogs.com/xgqfrms/p/17357705.html
未经授权禁止转载,违者必究!