Axios: рдЫрд╡рд┐ рдХреЛ рдмреЗрд╕ 64 рдореЗрдВ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╕реЗ рдХреИрд╕реЗ рдмрджрд▓реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 1 рдирд╡ре░ 2016  ┬╖  10рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: axios/axios

рдПрдирдкреАрдПрдо рдореЗрдВ рдХреЛрдИ рднреА рдХрд╛рдо рдЬреЛ рдРрд╕рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

axios.get('http://www.freeiconspng.com/uploads/profile-icon-9.png', {
   transformRequest: [function (data) {
       return data;
   }],
  transformResponse: [function (data) {
    return data;
  }],
});

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдпрджрд┐ рдЖрдк рдореЗрд░реА рддрд░рд╣ рдиреЛрдб рдкрд░ рд╣реИрдВ рдФрд░ рдЖрдк v >= 6 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдПрдХ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдЖ рдерд╛ рдФрд░ рдЖрдкрдХреЛ Buffer.from рдпрд╛ рдЗрд╕реА рддрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

function getBase64(url) {
  return axios
    .get(url, {
      responseType: 'arraybuffer'
    })
    .then(response => Buffer.from(response.data, 'binary').toString('base64'))
}

рд╕рдВрджрд░реНрдн рд╕реБрд░рдХреНрд╖рд┐рдд-рдмрдлрд░
new Buffer()' was deprecated since v6. Use 'Buffer.alloc()' or 'Buffer.from()' (use 'https://www.npmjs.com/package/safe-buffer' for '<4.5.0') instead

рд╕рднреА 10 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ StackOverflow рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╢реНрди рд╣реИред

рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП, рдореЗрд░реЗ рдкрд╛рд╕ рдирд┐рдореНрди рдХреЛрдб рд╣реИ:

get('/getImg', {
    responseType: 'arraybuffer' 
})
.then(function(result) {
    console.log(_imageEncode(result.data))
})
function _imageEncode (arrayBuffer) {
    let u8 = new Uint8Array(arrayBuffer)
    let b64encoded = btoa([].reduce.call(new Uint8Array(arrayBuffer),function(p,c){return p+String.fromCharCode(c)},''))
    let mimetype="image/jpeg"
    return "data:"+mimetype+";base64,"+b64encoded
}

рдпрд╣ рд╣рдорд╛рд░рд╛ рд╕рдорд╛рдзрд╛рди рдерд╛, рдпрд╣ рдПрдХ рдЖрдХрд░реНрд╖рдг рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

return axios.get('http://example.com/image.png', { responseType: 'arraybuffer' })
      .then((response) => {
        let image = btoa(
          new Uint8Array(response.data)
            .reduce((data, byte) => data + String.fromCharCode(byte), '')
        );
        return `data:${response.headers['content-type'].toLowerCase()};base64,${image}`;
      });

рдХрд╛рд░рдг рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдХрд┐ axios рд╕рдм рдХреБрдЫ рдПрдХ json рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд░рдЦрддрд╛ рд╣реИред рдЪреВрдБрдХрд┐ рдЖрдк рдмрд╛рдЗрдирд░реА рдХреЛ рдПрдХ рдЬреЛрдВрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдирд╣реАрдВ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдЗрд╕реЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдмрд╛рдЗрдирд░реА рдХреЛ рддреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХрджрдо рд╕рд╣реА рдХрд╛рдо рдХрд┐рдпрд╛:

function getBase64(url) {
  return axios
    .get(url, {
      responseType: 'arraybuffer'
    })
    .then(response => new Buffer(response.data, 'binary').toString('base64'))
}

рдпрджрд┐ рдЖрдк рдореЗрд░реА рддрд░рд╣ рдиреЛрдб рдкрд░ рд╣реИрдВ рдФрд░ рдЖрдк v >= 6 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдПрдХ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдЖ рдерд╛ рдФрд░ рдЖрдкрдХреЛ Buffer.from рдпрд╛ рдЗрд╕реА рддрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

function getBase64(url) {
  return axios
    .get(url, {
      responseType: 'arraybuffer'
    })
    .then(response => Buffer.from(response.data, 'binary').toString('base64'))
}

рд╕рдВрджрд░реНрдн рд╕реБрд░рдХреНрд╖рд┐рдд-рдмрдлрд░
new Buffer()' was deprecated since v6. Use 'Buffer.alloc()' or 'Buffer.from()' (use 'https://www.npmjs.com/package/safe-buffer' for '<4.5.0') instead

@ рд╢реЙрди-рд╣рд┐рд▓ рдХреНрдпрд╛ рдЖрдкрдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЫрд╡рд┐ рдХрд╛ рдкрд╣рд▓рд╛ рдЯреЛрдХрди рдХреНрдпреЛрдВ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ? рдореБрдЭреЗ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ data:image/png;base64, рднрд╛рдЧ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗ рд░рд╣рд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдмреЗрд╕ 64 рдбреЗрдЯрд╛ рдЕрдорд╛рдиреНрдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ

рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдХрд╛рдо

function getImage(imageUrl) {
var options = {
    url: `${imageUrl}`,
    encoding: "binary"
};
  return new Promise(function (resolve, reject) {
    request.get(options, function (err, resp, body) {
        if (err) {
            reject(err);
        } else {
            var prefix = "data:" + resp.headers["content-type"] + ";base64,";
            var img = new Buffer(body.toString(), "binary").toString("base64");
            //  var img = new Buffer.from(body.toString(), "binary").toString("base64");
            var dataUri = prefix + img;
            resolve(dataUri);
        }
    })
})
}
function getImage(imageUrl) {
var options = {
    url: `${imageUrl}`,
    encoding: "binary"
};

    request.get(options, function (err, resp, body) {
        if (err) {
            reject(err);
        } else {
            var prefix = "data:" + resp.headers["content-type"] + ";base64,";
            var img = new Buffer(body.toString(), "binary").toString("base64");
           //  var img = new Buffer.from(body.toString(), "binary").toString("base64");
            var dataUri = prefix + img;
        }
    })
}
return axios.get('http://site.com/img.png', { responseType: 'arraybuffer' })
  .then(response => `data:${response.headers['content-type']};base64,${btoa(String.fromCharCode(...new Uint8Array(response.data)))}`);
return axios.get('http://site.com/img.png', { responseType: 'arraybuffer' })
  .then(response => `data:${response.headers['content-type']};base64,${btoa(String.fromCharCode(...new Uint8Array(response.data)))}`);

рдиреЛрдб рд╕рдВрд╕реНрдХрд░рдг:

    return axios.get(url, { responseType: 'arraybuffer' }).then(res => {
      ;`data:${res.headers['content-type']};base64,${Buffer.from(String.fromCharCode(...new Uint8Array(res.data)), 'binary')
        .toString('base64')}`
    })

@voidpls
рдЖрдкрдХреА рд╡рд┐рдзрд┐ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирддреА рд╣реИ!
Uncaught RangeError: Maximum call stack size exceeded

рдЗрд╕рдХрд╛ рдХрд╛рд░рдг
toa(String.fromCharCode(...new Uint8Array(response.data)))

рдЖрдк рдЗрд╕ рддрд╕реНрд╡реАрд░ рдХреЛ рдЖрдЬрдорд╛ рд╕рдХрддреЗ рд╣реИрдВ
texture 4a95078a

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

altruisticsoftware picture altruisticsoftware  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

c0debreaker picture c0debreaker  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

helmus picture helmus  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ghprod picture ghprod  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Baoyx007 picture Baoyx007  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ