AngularJS文件上传拖放显示图像

时间:2015-04-17 15:28:09

标签: angularjs angular-file-upload

每当有人使用angular js file upload将其拖放到保管箱内时,我正试图让图像可见 我也在SO上查看at this post,但无法使其正常工作。

我尝试过各种各样的东西,例如显示blob,显示文件,但是我无法在该区域中删除后显示图像。

HTML:

<div ng-file-drop ng-model="files" ng-file-change="placeImage()"
drag-over-class="dragover" ng-multiple="false" class="dropbox" allow-dir="true"
accept=".jpg,.png,.pdf">Drop photo here!</div>

AngularJS:

$scope.placeImage = function () {
    var files = $scope.files;
        if (files && files.length) {
            for (var i = 0; i < files.length; i++) {
                ('.dropper').html(files[i]); //does not work: obvious desperate move
                ('.dropper').html(files[i].__proto__.__proto__); //Doesn't work (even tried 64base)
            }
        }
}

如何将图像放入投递箱后显示图像?

更新

以下也不起作用:

 $("<img />").attr("src", files[i]).appendTo(".dropper");

 $("<img />").attr("src", files[i].__proto__.__proto__).appendTo(".dropper");

然后发生以下错误:

  http://localhost:8080/project/[object%20Object] 404 (Not Found)

更新2:

使用以下方法修复:

$scope.placeImage = function () {
        var ctx = document.getElementById('canvas').getContext('2d');
        var url = URL.createObjectURL($scope.files[0]);
        var img = new Image();
        img.onload = function() {
            ctx.drawImage(img, 20, 20);    
        }
        img.src = url;
}

1 个答案:

答案 0 :(得分:1)

文件不是HTML元素。您必须将文件指定为img标记的src。

$("<img />").attr("src", files[i]).appendTo(".dropper");

我认为上面的单行将使用angular的内置jQuery lite,但它可能需要jQuery。它应该让你知道你至少需要做什么。