Sameera Thilakasiri
Sameera Thilakasiri

Reputation: 9508

Angularjs: Error: 'append' called on an object that does not implement interface FormData. jQuery.param/add

Im using https://github.com/danialfarid/ng-file-upload plugin to manage my file upload, following is my code.

HTML

<form name="form">
    Single Image with validations
    <div class="button" ngf-select ng-model="file" name="file" ngf-pattern="'image/*'"
         ngf-accept="'image/*'" ngf-max-size="20MB" ngf-min-height="100"
         ngf-resize="{width: 100, height: 100}">Select</div>
    Multiple files
    <div class="button" ngf-select ng-model="files" ngf-multiple="true">Select</div>
    Drop files: <div ngf-drop ng-model="files" class="drop-box">Drop</div>
    <button type="submit" ng-click="upload()">submit</button>
</form>

Controller

// upload on file select or drop
                $scope.upload = function (file) {

                    file = new FormData();
                    file = {'file': file};


                    imageFind.search(file, $scope.documentsOffsetStart, $scope.titleSorting)
                        .then(
                        function (response) {
                            console.log('Success ' + response.config.data.file.name + 'uploaded. Response: ' + response.data);
                        },
                        function (response) {
                            console.log('Error status: ' + response.status);
                        }, function (evt) {
                            console.log('progress: ' + progressPercentage + '% ' + evt.config.data.file.name);
                        });

                };

Image find service

  ]).factory('imageFind', [
        'imageService', 'ApiService',
        function (imageService, ApiService) {
            return {
                search: function (file, start, sort) {
                    var formData, params={};
                     if (start == null) {
                        start = 0;
                     }
                     if (sort == null) {
                        sort = "";
                     }

                    var data = {
                        start: start,
                        sort: sort
                    };

                    data = $.param(data);
                    var config = {'Content-Type': undefined};
                    return ApiService.post(imageFindPint, data, config);
                }
            };
        }
    ]);

Im getting following error when image upload: Error: 'append' called on an object that does not implement interface FormData. jQuery.param/add

do you see I'm doing anything wrong?

Upvotes: 1

Views: 816

Answers (1)

WoW
WoW

Reputation: 41

Pass <button type="submit" ng-click="upload('file')">submit</button>

This should solve the issue.

In the controller // file = new FormData(); // file = {'file': file};

can be removed but need to add FormData() to services.

Upvotes: 1

Related Questions