2013-08-17 55 views
5

我可能在這裏錯過了一些簡單的東西,但是如何在JavaScript中創建一個File對象給定從AJAX請求接收到的二進制數據?如何從JavaScript中的二進制數據創建一個文件對象

$.ajax({ 
    url: "http://example.com/image.jpg", 
    success: function(data) { 
    // Convert binary data to File object 
    } 
}); 
+0

這似乎是相關的:http://stackoverflow.com/questions/8390855/how-to-instantiate-a-file-object-in-javascript – Jonah

回答

11

我終於明白了這一點。爲了避免跨站點腳本問題,我在我的服務器上創建了代理端點。然後我可以將圖像URL傳遞給我的服務器,服務器然後對遠程文件執行GET請求,將響應轉換爲Base64,並將其發送回瀏覽器。然後,瀏覽器可以將數據轉換回二進制文件並創建一個Blob(與我的目的一樣好)。

$.ajax({ 
    url: apiRoot + "/proxy", 
    data: {url: "http://example.com/image.jpg"}, 
    success: function(data) { 
    var binary = atob(data.split(',')[1]); 
    var array = []; 
    for (var i = 0; i < binary.length; i++) { 
     array.push(binary.charCodeAt(i)); 
    } 
    var file = new Blob([new Uint8Array(array)], {type: 'image/jpeg'}); 
    } 
}); 
+1

如果我使用'var文件=新的文件([新Uint8Array(array)],{type:'image/jpeg'});'我如何獲取圖像的名稱? – CENT1PEDE

相關問題