在SharePoint中的以下代码中上载文档库中的多个附件时遇到问题。 [英] Getting issue in Uploading Multiple attachments in document library in below code in SharePoint online.

查看:59
本文介绍了在SharePoint中的以下代码中上载文档库中的多个附件时遇到问题。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在表单中使用两个控件来上传多个文档,即一个命名为主文档,另一个命名为辅助文档。两个控件都在库中上传多个附件。

问题 - 有些文件是上传的,有些文件没有上传。

这是我的下面的代码。


                                                     var controle1 =" N"; $
var controle2 =" N"; $
function onSuccess(){

  ; //提醒("成功");

   提醒('商品已创建:'  + newItem.get_id());

    var ItemID = newItem.get_id();

    var elementId1 = $(&#; PERSONAL0id")。val();

    var elementId2 = $(&#; PERSONAL1id")。val();

    if(elementId1!="")

    {

    controle1 =" Y";
    }¥b $ b    if(elementId2!="")

    {

    controle2 =" Y";
    }¥b $ b    if(controle1 ==" Y")

    {

    var Control =" P";
    uploadMFBySearch(ItemID,Control);

    }¥b $ b    if(controle2 ==" Y")

    {

    var Control =" S";
    uploadMFBySearch(ItemID,Control);

    }¥b $ b   提醒("项目已更新");

$
}




函数uploadMFBySearch(ItemID,Control) {

调试器;

// alert(ItemID);

    var serverRelativeUrlToFolder ='docLibrary /';

    var fileInput = jQuery('#PERSONAL'+ Control +'id');

    var newName =" mulDoc";

    var docType =" muldocument";

    var filerename =" muldocument";                 

    var fileCount = fileInput [0] .files.length;

    var serverUrl = _spPageContextInfo.webAbsoluteUrl;

    var filesUploaded = 0;

  &NBSP; for(var i = 0; i< fileCount; i ++){//使用jQuery promises启动方法调用。 //将本地文件作为数组缓冲区。

  &NBSP; &NBSP; &NBSP;   var getFile = getFileBufferMF(i);

  &NBSP; &NBSP; &NBSP; &NBSP; getFile.done(功能(arrayBuffer,I){//将文件添加到SharePoint夹

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; VAR addFile = addFileToFolderMF(arrayBuffer, i);
$
       addFile.done(function(file,status,xhr){//获取上传文件的ID // mFclear(); <登记/>
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; VAR getfileID =的getItem(file.d.ListItemAllFields .__ deferred.uri); // VAR getfileID =的getItem(file.d) ; //getListItem(file.d.ListItemAllFields.__deferred.uri);//getItem(file.d);

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; getfileID .done(function(fResult){

           var colObjectMF = new Object();

           colObjectMF [" DocumentCategory"] =" yo" ;; // var changeItem = updateFileMetadataMF(libraryName,fResult.d,colObject) ;

&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var changeItem = updateFileMetadataMF(fResult.d .__ metadata,docType,newName,filerename,i,fileInput,ItemID,Control);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; changeItem.done(功能(结果){

             filesUploaded ++;

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; //警报(QUOT; H1");

&NBSP;&NBSP;&NBSP;&NBSP ;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;若(fileCount == filesUploaded){

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP ;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; //警报("成功上传的所有文件");

&NBSP;&NBSP;&NBSP; &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; filesUploaded = 0;



                     // ClearPersonalMF(Control) ;
$
      &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;  }

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;  });

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; changeItem.fail(功能(结果){
$
          });

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; },function(){});

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; });

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; addFile.fail(onErrorMF);

  &NBSP; &NBSP; &NBSP; });

  &NBSP; &NBSP; &NBSP; getFile.fail(onErrorMF);

  &NBSP; }




  //此函数将返回已上传项目的ID。  

function getItem(fileListItemUri){

  &NBSP; &NBSP; &NBSP;返回jQuery.ajax({

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;网址:fileListItemUri,

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;输入:" GET",
       headers:{" accept":" application / json; odata = verbose"}

    });

  &NBSP; &NBSP;  }



$
  &NBSP; function getFileBufferMF(i){//将本地文件作为数组缓冲区。

  &NBSP; &NBSP; &NBSP; var deferred = jQuery.Deferred();

  &NBSP; &NBSP; &NBSP; var reader = new FileReader();

  &NBSP; &NBSP; &NBSP; reader.onloadend = function(e){deferred.resolve(e.target.result,i);}

  &NBSP; &NBSP; &NBSP; reader.onerror = function(e){deferred.reject(e.target.error);}

  &NBSP; &NBSP; &NBSP; reader.readAsArrayBuffer(fileInput [0] .files [i]);

  &NBSP; &NBSP; &NBSP; return deferred.promise();

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; }




  &NBSP; function addFileToFolderMF(arrayBuffer,i){//将文件添加到共享文档文件夹中的文件集合。

  &NBSP; &NBSP; &NBSP; var index = i;

  &NBSP; &NBSP; &NBSP; fileNameMF1 = fileInput [0] .files [index] .name;

  &NBSP; &NBSP; &NBSP; //fileNameMF.push(fileInput[0].files[index].name);//从页面上的文件输入控件中获取文件名。  &NBSP; &NBSP;   //构建端点。

  &NBSP; &NBSP; &NBSP; var fileCollectionEndpoint = String.format(" {0} / _ api / web / getfolderbyserverrelativeurl('{1}')/ files / add(overwrite = true,url ='{2}')",serverUrl,serverRelativeUrlToFolder,fileNameMF1 ); $
  &NBSP; &NBSP; //发送请求并返回响应。此调用返回SharePoint文件。

  &NBSP; &NBSP; &NBSP;返回jQuery.ajax({

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;网址:fileCollectionEndpoint,

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;键入:" POST",
       data:arrayBuffer,

        ; // async:false,

       processData:false,

        ;标题:{

        " accept":" application / json; odata = verbose",

        " X-RequestDigest":jQuery(" #__ REQUESTDIGEST")。val(),

   &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;"内容长度" ;: arrayBuffer.byteLength

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;}

    });
$


  &NBSP; }
}
$


//显示错误消息。 

函数onErrorMF(错误){

  &NBSP; console.log(" mf:" + error.responseText);

  &NBSP; //ale(" mf:" + error.responseText);

}



函数updateFileMetadataMF(item,docType,newName, filerename,i,fileInput,ItemID,Control){

  &NBSP; // var dt = new Date;

    // var f1 = filerename +" _" + fileInput [0] .files [i] .name.split('。')[0] +" _" + dt.format(" dd_MMM_yyyy") ;

  &NBSP; &NBSP; &NBSP; var body = String.format(" {{'__ metadata':{{'type':'{0}'}},'Title':'{1}','DocumentType':'{2}'}} ",item.type,ItemID,Control);

  &NBSP; &NBSP; &NBSP; return jQuery.ajax({

       url:item.uri,

       键入:" POST",
       // async:false,

      ;  数据:正文,

      标题:{

         " X-RequestDigest":jQuery(" #__ REQUESTDIGEST")。val(),

         "内容类型" ;:"应用/ JSON;的OData =冗长" ;,

&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;"内容长度" ;:体。长度,

        " IF-MATCH":item.etag,

         " X-HTTP-Method":" MERGE"

       ; }¥b $ b  &NBSP; &NBSP; &NBSP; });

  &NBSP; &NBSP; &NBSP;   return dfd.promise();



  &NBSP; }





Shiv Sharma

解决方案


你可以试试下面的脚本上传多个附着物列出,你只需要更新uploadFileSP逻辑在addFileToFolderMF


<预类=" prettyprint"><脚本类型= QUOT;文本/ JavaScript的" SRC =" HTTPS://code.jquery.com/jquery-1.12.4.js">< /脚本>
< script type =" text / javascript" SRC =" /SiteAssets/angular/angular.min.js">< /脚本>
< script type =" text / javascript">
var app = angular.module('myApp',[]);

app.controller('MainCtrl',函数(


范围){


scope.name ='UploadAttachements' ;

I am using two control in form for Uploading multiple document i.e one named as primary documents and another named as secondary document. Both control are uploading multiple attachments in library.
Issue- Some files are upload, some are not Uploading.
this is my below code.

                                                    var controle1="N";
var controle2="N";
function onSuccess(){
  // alert("in sucess");
    alert('Item created: '  + newItem.get_id());
    var ItemID=newItem.get_id();
    var elementId1=$("#PERSONAL0id").val();
    var elementId2=$("#PERSONAL1id").val();
    if(elementId1!="")
    {
    controle1="Y";
    }
    if(elementId2!="")
    {
    controle2="Y";
    }
    if(controle1=="Y")
    {
    var Control="P";
    uploadMFBySearch(ItemID,Control);
    }
    if(controle2=="Y")
    {
    var Control="S";
    uploadMFBySearch(ItemID,Control);
    }
    alert("Item Updated");

}

function uploadMFBySearch(ItemID,Control) {
debugger;
//alert(ItemID);
    var serverRelativeUrlToFolder = 'docLibrary/';
    var fileInput = jQuery('#PERSONAL'+Control+'id');
    var newName ="mulDoc";
    var docType="muldocument";
    var filerename="muldocument";                 
    var fileCount = fileInput[0].files.length;
    var serverUrl = _spPageContextInfo.webAbsoluteUrl;
    var filesUploaded = 0;
    for (var i = 0; i < fileCount; i++) {// Initiate method calls using jQuery promises. // Get the local file as an array buffer.
         var getFile = getFileBufferMF(i);
         getFile.done(function (arrayBuffer, i) { // Add the file to the SharePoint folder.
            var addFile = addFileToFolderMF(arrayBuffer, i);
            addFile.done(function (file, status, xhr) {//Get ID of File uploaded //mFclear();
                var getfileID =getItem(file.d.ListItemAllFields.__deferred.uri);//var getfileID =getItem(file.d); //getListItem(file.d.ListItemAllFields.__deferred.uri);//getItem(file.d);
                getfileID.done(function (fResult) {
                    var colObjectMF = new Object();
                    colObjectMF["DocumentCategory"] = "yo";//var changeItem = updateFileMetadataMF(libraryName, fResult.d, colObject);
                    var changeItem = updateFileMetadataMF(fResult.d.__metadata,docType,newName,filerename,i,fileInput,ItemID,Control);
                    changeItem.done(function (result) {
                        filesUploaded++;
                        //alert("HI");
                        if (fileCount == filesUploaded) {
                                        //alert("All files uploaded successfully");
                                        filesUploaded = 0;

                                        //ClearPersonalMF(Control);
                         }
                     });
                    changeItem.fail(function (result) {
                    });
                }, function () { });
            });
            addFile.fail(onErrorMF);
        });
        getFile.fail(onErrorMF);
    }


  //This function will return the id of item uploaded.  
function getItem(fileListItemUri) {
        return jQuery.ajax({
            url: fileListItemUri,
            type: "GET",
            headers: { "accept": "application/json;odata=verbose" }
        });
       }


    function getFileBufferMF(i) {// Get the local file as an array buffer.
        var deferred = jQuery.Deferred();
        var reader = new FileReader();
        reader.onloadend = function (e) {deferred.resolve(e.target.result, i);}
        reader.onerror = function (e) {deferred.reject(e.target.error);}
        reader.readAsArrayBuffer(fileInput[0].files[i]);
        return deferred.promise();
                                }


    function addFileToFolderMF(arrayBuffer, i) { // Add the file to the file collection in the Shared Documents folder.
        var index = i;
        fileNameMF1 = fileInput[0].files[index].name;
        //fileNameMF.push(fileInput[0].files[index].name);// Get the file name from the file input control on the page.       // Construct the endpoint.
        var fileCollectionEndpoint = String.format("{0}/_api/web/getfolderbyserverrelativeurl('{1}')/files/add(overwrite=true, url='{2}')",serverUrl, serverRelativeUrlToFolder, fileNameMF1);
      // Send the request and return the response.// This call returns the SharePoint file.
        return jQuery.ajax({
            url: fileCollectionEndpoint,
            type: "POST",
            data: arrayBuffer,
            //async:false,
            processData: false,
            headers: {
                "accept": "application/json;odata=verbose",
                "X-RequestDigest": jQuery("#__REQUESTDIGEST").val(),
                "content-length": arrayBuffer.byteLength
            }
        });

    }
}

// Display error messages. 
function onErrorMF(error) {
    console.log("mf:"+error.responseText);
    //alert("mf:"+error.responseText);
}

function updateFileMetadataMF(item,docType,newName,filerename,i,fileInput,ItemID,Control) {
    //var dt = new Date;
   // var f1=filerename+"_"+fileInput[0].files[i].name.split('.')[0]+"_"+dt.format("dd_MMM_yyyy");
        var body = String.format("{{'__metadata':{{'type':'{0}'}},'Title':'{1}','DocumentType':'{2}'}}",item.type,ItemID,Control);
        return jQuery.ajax({
            url: item.uri,
            type: "POST",
            //async:false,
            data: body,
            headers: {
                "X-RequestDigest": jQuery("#__REQUESTDIGEST").val(),
                "content-type": "application/json;odata=verbose",
                "content-length": body.length,
                "IF-MATCH": item.etag,
                "X-HTTP-Method": "MERGE"
            }
        });
         return dfd.promise();

    }


Shiv Sharma

解决方案

Hi,

You could try below script which upload multiple attachements to list, you just need update the uploadFileSP logic to your addFileToFolderMF.

<script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.js"></script>
    <script type="text/javascript" src="/SiteAssets/angular/angular.min.js"></script>    
    <script type="text/javascript">
        var app = angular.module('myApp', []);

        app.controller('MainCtrl', function (


scope) {


scope.name = 'UploadAttachements';


这篇关于在SharePoint中的以下代码中上载文档库中的多个附件时遇到问题。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆