我有一個用ng-file-upload上傳圖片的用例,服務器現在處於生成縮略圖的過程中,並且根據請求返回文件的base64字符串(縮略圖,像2K那樣非常小)。使用ng-file-upload從服務器使用blob數據?
這工作得很好;不過,我還希望能夠在ng-file-upload等其他用途(如ngf-src或ngf-background)中使用該blob。但我不確定究竟如何。
我目前使用這個請求併產生斑點(控制器縮短爲簡潔起見):
$http({
url: appconfig.serviceUrl + ":" + appconfig.port + "/api/file/" + fileName,
method: 'GET',
cache: true,
headers: { 'Content-Type': 'application/json' }
}).then(function (response) {
var apiURL = (window.createObjectURL && window) || (window.URL && URL.revokeObjectURL && URL) || (window.webkitURL && webkitURL);
var blob = new Blob([response.data], { type: 'image/jpg' });
blob.src = response.data;
blob.url = apiURL.createObjectURL(blob);
deferred.resolve(blob);
}, function (error) {
deferred.reject(error);
}));
在我的HTML的諧音,我可以使用以下方法來輕鬆展現團塊在任何瀏覽器(其中controlleras是「VM」和BLOB最終進入vm.img的範圍):
<img ng-src="data:image/jpg;base64,{{vm.img.src}}" type="image/jpg" width="320" height="180"/>
我知道這可能不是一個blob正確的格式,我只是學習使用它們。
我試圖做類似如下:
var file = new File([blob], fileName, { type: 'image/jpg' });
雖然Chrome和Firefox似乎能夠生成文件確定,IE11將拋出一個「類型錯誤:對象不支持此操作」 ...
現在我該如何創建一個'文件'用於ng-file-upload的ng-models來使用和使用?
在另一個說明中,起初我只能從服務器根據請求發送文件作爲流。但是,它是一個具有exif數據的本地文件(字節數組?)。我可以「而不是」弄清楚使用與NG-文件上傳要麼:(
我已經改變了我如何處理blob,現在生成服務器..發回它。 PNG轉換正在殺死瀏覽器,所以我正在以另一種方式處理這個問題。 儘管如此,我希望能夠從服務器獲取blob,併爲ng-file-upload及其指令(如ngThumbnail)使用'文件'。我想我很接近於搞清楚,但不適合IE ......它似乎不喜歡新的File(); – razblack
正如我所說的,你不需要ngf-thumbnail的實際blob。你可以傳遞網址或字符串。 – danial
但是,如果你真的堅持你可以使用內置的服務'Upload.urlToBlob()'閱讀文檔。 – danial