AngularJS照片/文件上传

时间:2016-02-10 13:49:23

标签: javascript angularjs

上传文件和照片似乎在除FF之外的其他浏览器上正常工作。它似乎是在形式的某个地方失败了。但是我不知道为什么它在Chrome和IE上运行而不是FF。

有人可以解释这个。

控制器:

$scope.uploadProfilePhoto = function() {
            $timeout(function(){
                var form = new FormData();
                form.append("fileName", vm.profilePhoto.fileName);
                form.append('file', vm.profilePhoto.file);
                ProfileService.uploadProfilePicture(form)
                    .then(function(response){
                        vm.ProfilePictureUrl = api.getQualifiedUrl('image/' + response.data.ImageId);
                    })
            });
        }

输入:

<label for="profilePhoto" class="photo-upd" >
  <img data-ng-src="{{vm.ProfilePictureUrl}}" id="profile-picture_image" alt="Candidate profile photo" onchange="angular.element(this).scope().uploadProfilePhoto(this)" class="img-responsive">                        
  <span><i class="fa fa-upload"></i> Upload Photo</span>
</label>
<input id="profilePhoto" type="file" name="profilePhoto" valid-file data-oh-file fileread="vm.profilePhoto.file" filename="vm.profilePhoto.fileName" class="hidden"onchange="angular.element(this).scope().uploadProfilePhoto(this)">

错误:

vm.profilePhoto is undefined
Profile/$scope.uploadProfilePhoto/

2 个答案:

答案 0 :(得分:0)

你不能使用$ scope.vm在上传功能吗?

答案 1 :(得分:0)

我只是注意到let document, window, pixels;对象必须是对象/控制器的vmself

您还需要声明this对象:

vm.profilePhoto

JS:

这里的例子:

https://jsfiddle.net/alvarojoao/v9rfn301/

var vm = this;
vm.profilePhoto = {};