2017-01-25 17 views
6

Tôi cần tải xuống hình ảnh .jpg từ máy chủ từ xa và chuyển đổi hình ảnh thành định dạng base64. Tôi đang sử dụng các trục như ứng dụng HTTP của tôi. Tôi đã thử phát hành một yêu cầu git cho máy chủ và kiểm tra các response.data tuy nhiên nó không có vẻ làm việc như thế.Tải xuống hình ảnh bằng Axios và chuyển đổi thành base64

Liên kết đến Axios: https://github.com/mzabriskie/axios

liên kết để thực hiện base64: https://www.npmjs.com/package/base-64

Tôi đang sử dụng NodeJS/Phản ứng quá atob/btoa không hoạt động, hense thư viện.

axios.get('http://placehold.it/32').then(response => { 
    console.log(response.data); // Blank 
    console.log(response.data == null); // False 
    console.log(base64.encode(response.data); // Blank 
}).catch(err => console.log(err)); 
+0

Các bạn đã cố gắng để thay đổi responseType nói blob? Từ tài liệu "//' responseType' cho biết loại dữ liệu mà máy chủ sẽ phản hồi " –

Trả lời

2

Có thể có một cách tốt hơn để làm điều này, nhưng tôi đã thực hiện nó như thế này (trừ các bit thêm như catch(), vv):

axios.get(imageUrl, { responseType:"blob" }) 
    .then(function (response) { 

     var reader = new window.FileReader(); 
     reader.readAsDataURL(response.data); 
     reader.onload = function() { 

      var imageDataUrl = reader.result; 
      imageElement.setAttribute("src", imageDataUrl); 

     } 
    }); 

Tôi có một nghi ngờ rằng ít nhất một phần của vấn đề của bạn có thể là phía máy chủ. Ngay cả khi không cài đặt { responseType: "blob" }, bạn đã có một thứ gì đó trong đầu ra response.data của mình.

8

này làm việc tuyệt vời cho tôi:

function getBase64(url) { 
    return axios 
    .get(url, { 
     responseType: 'arraybuffer' 
    }) 
    .then(response => new Buffer(response.data, 'binary').toString('base64')) 
} 
Các vấn đề liên quan