2016-02-24 101 views
1

說我只有一個圖像的URL,我想從跨域腳本獲取它的BAse64字符串值,而不使用DOM或Canvas或jQuery。這可能嗎?...通過使用純Javascript?Javascript:從圖像URL獲取Base64字符串

+1

不,那是不可能的,除非你使用Node.js的,做一個XMLHttpRequest到返回中的Base64的服務器,你會使用*只有JavaScript *這種方式,並沒有DOM, Canvas或jQuery – adeneo

+0

不使用畫布或DOM或jQuery?我認爲這是不可能的。爲什麼你不使用畫布? –

+0

您可以使用['btoa('...')'](https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/btoa)轉換爲Base64,但您仍然需要了解如何從不同的領域獲取圖像。 – Xufox

回答

4

如果圖像是跨域資源,除非服務器使用適當的CORS標頭提供圖像,否則您將無法讀取它。瀏覽器從不允許腳本讀取跨源資源的內容(這是同源策略的核心),除非跨源服務器明確允許使用CORS。

假設你有適當的CORS標頭(或只是同源圖像)的圖像,你可以提取圖片爲Blob(使用responseType),並把它讀作一個文件來獲取base64編碼data:網址:

var xhr = new XMLHttpRequest() 
xhr.open("GET", "myimg.png"); 
xhr.responseType = "blob"; 
xhr.send(); 
xhr.addEventListener("load", function() { 
    var reader = new FileReader(); 
    reader.readAsDataURL(xhr.response); 
    reader.addEventListener("loadend", function() {    
     console.log(reader.result); 
    }); 
});