Rumah  >  Soal Jawab  >  teks badan

javascript - Cara menggunakan perpustakaan permintaan dalam nodejs untuk menangkap imej dari halaman web

const koa = require('koa');
const request = require('request');
const fs = require('fs');
const path = require('path');
function requestAsync(url) {
    return new Promise((resolve, reject) => {
        request({
            url: url
        }, (err, res, body) => {
            if (err) {
                reject(err);
            } else {
                resolve(body);
            }
        })
    });
}
function writeFileAsync(path, data, option) {
    return new Promise((resolve, reject) => {
        fs.writeFile(path, data, option, (err)=> {
            if (err) {
                reject(err);
            } else {
                resolve();
            }
        })
    });
}
const app = new koa();
app.use(async (ctx) => {
    let url = 'http://pubimage.360doc.com/index7/bannerl_1.jpg';
    let filepath = path.join(__dirname, './images/详情');
    filepath = filepath + '/1.jpg';
    // request(url).pipe(fs.createWriteStream(filepath));这个可以正常抓取图片
    let data = await requestAsync(url);
    let buffer = Buffer.from(data);
    await writeFileAsync(filepath, buffer);
    ctx.type = 'jpg';
    ctx.body = buffer;
})
app.listen(3000);
console.log(`starting at ${3000}`);

Saya menulis kedua-dua permintaan dan menulis fail dalam bentuk janji Ia adalah mungkin untuk menangkap html, tetapi bukan imej

Pada mulanya, output data adalah jenis rentetan, iaitu badan permintaan adalah jenis rentetan, jadi saya menggunakan Buffer.from

Menukar kepada jenis penimbal tidak berfungsi, begitu juga menukarnya kepada Buffer.from(data, 'base64'), tetapi hanya menggunakan request(url).pipe(fs.createWriteStream(filepath)) akan berjaya
Sila beritahu saya apa yang silap

滿天的星座滿天的星座2704 hari yang lalu842

membalas semua(1)saya akan balas

  • 三叔

    三叔2017-06-17 09:18:39

    /q/10...

    balas
    0
  • Batalbalas