2017-07-26 76 views
1

不顯示我發送一個base64字符串,像這樣的PHP代碼:圖片用base64在Safari

data:image/jpeg;base64,/9j/4XxuRXhpZgAASUkqAAgAAAAMAAABBAABAAAAAAgAAAEBBAABAAAAAAYAAA8BAgAIAAAAngAAABABAgAJAAAApgAAABIBAwABA............ 

在我的javascript代碼,我在我的圖像放在爲波紋管編輯:

var img = new Image(); 
    img.src = response.dataURL; 
    editor.updateImage(img); 

的圖像加載在Firefox,Chrome,但在Safari它提供了以下錯誤:TypeError: '[object BlobConstructor]' is not a constructor (evaluating 'new Blob([new Uint8Array(array)], {type: mimeString})')

我怎樣才能解決這個問題在所有的瀏覽器嗎?

謝謝。

+0

only only safari? –

+0

請仔細閱讀你寫錯之前的錯誤信息。你的問題是'Blob'不是一個構造函數。這意味着你的Safari版本不支持'新的Blob',但仍然知道'Blob'。這意味着你正在使用Safari 5.1〜6(5歲)。這意味着您已經打開了網絡上的任何惡意軟件。這意味着你應該立即拋出這個,並使用VirtualMachine,或者甚至更好的一個真正的osX來對Safari做測試。蘋果公司在2012年確實停止了他們的Windows瘋狂行爲,從此以後從未給出過單一的安全補丁。 – Kaiido

回答

-1

一個可能的解決辦法是設置後設置您的跨域的img.src

var img = new Image(); 
img.src = response.dataURL; 
img.crossOrigin = 'Anonymous'; 
// Now set your image 
editor.updateImage(img); 

另一種解決方案來自於答案提供here

the problem seems to be that Safari will not render base64 images that does not have a number of character divisible by 4. The solution to this problem is to pad your encoded string at the end using '=' characters. Here is a basic algorithm:

// b64str = 's/3eea4sp...' (or any base 64 encoded string) 
while (b64str.length % 4 > 0) { 
    b64str += '='; 
} 

編輯:

你可以嘗試從deprec切換ated BlobBuilderBlob

var imageBlob = new Blob([response.dataURL], {type: mimeString});  
var objurl = window.URL.createObjectURL(imageBlob)); 
var img = new Image(); 

img.src = objurl; 
editor.updateImage(img); 
+0

沒有人工作 –

+0

whith添加墊(=)我現在得到鉻InvalidCharacterError:字符串包含一個無效字符 –

+0

增加了Safari的棄用'BlobBuilder'解決方法,也許這有效嗎? – Kano