首页 文章

ng-file-upload输出模型只包含$ ngfBlobName,但文件上传很好

提问于
浏览
0

我正在使用ng-file-upload将图像上传到我的网络服务器 .

一旦用户选择文件然后我们将它们显示在轮播中,用户就可以手动将它们上传到服务器(通过提交按钮) .

有些图像没有显示在旋转木马中 . 所述图像仍然上传到服务器OK并显示在前端,即,预览中未显示的图像正在上传并在图库中显示(可以看到图像) .

模型的ng-file-upload输出模型有所不同,预览中显示的图像成功包含了人们期望的内容:

{
"$ngfBlobUrl": "blob:http%3A//localhost%3A4567/50df9cf5-1962-4903-8c82-02c847aadd16",
"$ngfWidth": 719,
"$ngfHeight": 837,
"$ngfDataUrl": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAICAgICAQICAgIDAgIDAwYEAwMDAwcFBQQGCAcJCAgHCAgJCg0LCQoMCggICw8LDA0ODg8OCQsQERA...(the rest has been removed)
 }

未在预览中显示但仍能成功上传(并在下载后显示在前端)的图像具有如下模型(从ng-file-upload给出):

{
    "$ngfName": "P9140214.jpg"
 }

因此,预览HTML中的img标签使用'$ ngfBlobUrl'作为图像的src属性,因此无法预览这些内容 .

如果我将提出问题的图像上传到常规输入类型=“文件”并使用FileReader API(将其转换为base64 ..)进行预览,那么它显示就好了 .

有没有人遇到过这样的事情?

如果我进入文件系统,有问题的图像有一些“其他图像”没有的属性,例如:

'设备制作','设备型号','颜色配置文件','焦距','红眼','F编号','曝光程序','曝光时间'

所以在Mac上,我右键单击图像并选择“更多信息”来查看这些属性 .

服务器如何获取此图像的图像数据?!

1 回答

  • 2

    我最后要解决的问题是在ng-file-upload指令中添加一个'ngf-change'调用并检查'ngfBlobUrl'是否存在 .

    $scope.filesChanged = function ($files, $file, $event, $rejectedFiles) {
                $files.forEach(function (file) {
                    if (!file["$ngfBlobUrl"]) {
                        Upload.dataUrl(file, false).then(function(url){});
                    }
                });
            };
    

    这样,图像现在在预览中呈现给我,并上传OK .

相关问题