2016-05-19 2 views
3

Я запрашиваю Salesforce для некоторых данных вложения и возвращает данные в двоичном формате.Преобразование двоичной формы в base64 строку в javascript

enter image description here

Я попытался преобразовать то же самое в base64, но я был совершенно безуспешными до сих пор. Я пробовал метод btoa(), но он возвращает the The string to be encoded contains characters outside of the Latin1 range..

Я попытался использовать метод fileReader i.e., readAsDataURL(), он возвращает строку base64, но, к сожалению, это не представляет изображение.

COOLD, пожалуйста, помогите мне в том, как преобразовать двоичную форму данных в base64encoded string?

Редактировать В конце концов, я хочу показать изображение на веб-странице с данными я получаю, который я не могу сделать

+0

Что вы пытаетесь делать с данными? –

+0

Вы уверены, что это не просто кодировка на дисплее консоли? Кроме того, что вы подразумеваете под «не представляет изображение»? – Boaz

+0

@SkinnyJ, я пытаюсь показать изображение на веб-странице. Как только я получу данные в base64, я могу показать, что с помощью атрибута src на изображении – Anamadeya

ответ

3

Если вы запрашиваете, что изображение с сервера, у вас есть выбор обращенного на base64 с сервера (и подавать его готово клиенту), или вам нужно передать URL-адрес изображения с сервера, а затем прочитать его и преобразовать в base64 из javascript клиента. Но если вы получите этот двоичный файл от сервера к клиенту, клиент не сможет его проанализировать, поскольку данные повреждены из-за неправильного метода отправки.

Пример преобразования URL в base64 (с Canvas или FileReader):

function convertImgToDataURLviaCanvas(url){ 
    var img = new Image(); 
    img.crossOrigin = 'Anonymous'; 
    img.onload = function(){ 
     var canvas = document.createElement('CANVAS'); 
     var ctx = canvas.getContext('2d'); 
     var dataURL; 
     canvas.height = this.height; 
     canvas.width = this.width; 
     ctx.drawImage(this, 0, 0); 
     dataURL = canvas.toDataURL("image/png"); 
     canvas = null; 
    }; 
    img.src = url; 
} 

function convertFileToDataURLviaFileReader(url){ 
    var xhr = new XMLHttpRequest(); 
    xhr.responseType = 'blob'; 
    xhr.onload = function() { 
     var reader = new FileReader(); 
     reader.onloadend = function() { 
      console.log(reader.result); 
     } 
     reader.readAsDataURL(xhr.response); 
    }; 
    xhr.open('GET', url); 
    xhr.send(); 
} 

Конверсия Fiddle:

http://jsfiddle.net/handtrix/yvq5y/

Смежные вопросы