如何使用我的指令显示我上传到我的控制器的图片

How to display a pic that I uploaded to my controller using my directive

嗯,老实说,这是我第一次尝试在 JS 中上传图片。我正在处理一个 Angular 项目,该项目需要从用户上传图片并将其显示在页面上。 (非常像我们在 facebook 上上传我们的个人资料照片,唯一不同的是,此页面稍后将以 pdf 格式下载)。

我很失望地看到 ng-model 不适用于文件类型。我尝试了很多东西,最后制定了一个指令,将文件带到我的控制器(从 here 获得帮助)。

现在我的 $scope.myPic 变量中有文件。我该如何使用这个文件。我如何显示它。 .我尝试直接绑定变量 {{myPic}},但没有用 .我尝试使用 (#id).value()。将其存储在变量和绑定中,但没有用。

还有其他一些我尝试过的东西,但无法帮助自己。

有人可以提供将用户从他们的系统上传的图像绑定到 Angular 中的 HTML 页面的方法吗? 非常感谢任何好的链接...

仅供参考:

我的指令 fn:

function uploadPicFn($parse) {
    return {
        restrict: 'A',
        link: function(scope, element, attrs) {
            var model = $parse(attrs.picModel);
            var modelSetter = model.assign;

            element.bind('change', function(){
                scope.$apply(function(){
                    modelSetter(scope, element[0].files[0]);
                });
            });
        }
    };
};

我的 html :

<div class="aw_textarea">
         <label>That's me:{{home.myPic}}</label></br>
         <input class="pd_txtarea" type="file" pic-model="home.myPic"/>
    </div>

这可以通过 File Reader 来完成。

您提到您得到了 here. So I updated jsfiddle from that article with very basic code example of how FileReader can be used. Take a look - jsfiddle

的帮助
        link: function(scope, element, attrs) {
          var model = $parse(attrs.fileModel);
          var modelSetter = model.assign;
          var img = element.parent().children()[2];
          var reader = new FileReader();
          reader.onload = function (e) {
            angular.element(img).attr('src', e.target.result);
          }

          element.bind('change', function(){
            scope.$apply(function(){
                modelSetter(scope, element[0].files[0]);
            });
            reader.readAsDataURL(element[0].files[0]);
        });
    }