Introduction
I was using ng-dropzone which is a AngularJS directive for dropzone.js and PnP JavaScript Core Library in order to add an attachment for list item.
I was following this url in order setup dropzone.js in my SharePoint hosted add-in.
In order to add an attachment to SharePoint list item please do the below changes.
- Replace $scope.dzCallbacks as below
 - Add below function to insert item and add attachment
 
  
      $scope.dzCallbacks = {
            'addedfile': function (file) {
                console.log(file);
                $scope.dropZoneFiles.push(file);
            },
            'success': function (file, xhr) {
                console.log(file, xhr);
            },
        };
Since my solution is a SharePoint hosted add-in I’m using crossDomain call and you have to replace your addinWeb and hostWeb url and also your have to change the list name. My list name is “abc”
  
     $scope.saveItem = function () {
          
            $pnp.sp.crossDomainWeb(addinWeb, hostWeb).lists.getByTitle("abc").items.add({
                Title: "Title",
            }).then((result) => {
              
                $scope.dropZoneFiles.forEach(function (file) {
                    var toUpload = file; 
                    
                    var r = new FileReader();
                    r.onloadend = function (e) {
                        var data = e.target.result;
                        item.attachmentFiles.add(toUpload.name, data).then(function () {
                            alert()
                        });
                    }
                    r.readAsArrayBuffer(toUpload);
                    
                    console.log(result);
                });
            }Conclusion
The item will be created and the attachment will be uploaded.
No comments:
Post a Comment