我有一个用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