簡體   English   中英

如何從 Sharepoint 文檔庫文件夾中檢索文件

[英]How to retrieve files from Sharepoint Document library Folders

我的文檔庫中有兩個文件夾,這兩個文件夾是根據文件上傳的年份自動創建的。 現在我需要做的是從多個文件中檢索文件。如何使用 javascript 實現此目的...

我的上傳文件和基於年份創建文件夾的功能

onclick="fileUpload('Improvement-Projects','improvementprojects')

function fileUpload(divId , fileId) {

var clientContext;
var oWebsite;
var oList;
var itemCreateInfo;
var resultpanel = "MySite";

clientContext = new SP.ClientContext.get_current();
oWebsite = clientContext.get_web();
oList = oWebsite.get_lists().getByTitle("QualityCI");

itemCreateInfo = new SP.ListItemCreationInformation();

itemCreateInfo.set_underlyingObjectType(SP.FileSystemObjectType.folder);
var d = new Date();
var n = d.getFullYear();

var dynfloder = itemCreateInfo.set_leafName(divId + '-' + n.toString());

alert(dynfloder);



this.oListItem = oList.addItem(itemCreateInfo);

this.oListItem.update();

clientContext.load(this.oListItem);
clientContext.executeQueryAsync(
  Function.createDelegate(this, successHandler),
  Function.createDelegate(this, errorHandler)
);

和函數來檢索文件

var d = new Date();
var n = d.getFullYear();
fileGetAction("/sites/Sitename/QualityCI" + '/' + divId + '-' + n.toString());

function fileGetAction(folderUrl) {

if ($.fn.DataTable.isDataTable('#table_id')) {
  $('#table_id').DataTable().destroy();
}
$('#table_id tbody').empty();
var requestURL = _spPageContextInfo.webAbsoluteUrl
  + "/_api/web/GetFolderByServerRelativeUrl('" + folderUrl + "')/Files";
$.ajax({
  url: requestURL,
  type: "GET",
  headers: {
    "Accept": "application/json;odata=verbose",
    "X-RequestDigest": $("#__REQUESTDIGEST").val()
  },
  complete: function (data) {

    console.log("folder: " + folderUrl + " - files: ", data);

    var dynamicTable = "";
    for (j = 0; j < data.responseJSON.d.results.length; j++) {
      var tableData = data.responseJSON.d.results[j];
      dynamicTable += "<tr>";
      dynamicTable += "<td>" + tableData.Name.split('.').slice(0, -1).join('.') + "</td>";
      dynamicTable += "<td>" + '<a href= "' + tableData.ServerRelativeUrl + '"> "' + tableData.Name + '"</a>' + "</td>";
      dynamicTable += "<td class='text-center'>" + '<a class="btn btn-primary delete" onclick="javascript: fileDeleteAction(\'' + tableData.ServerRelativeUrl + '\',\'' + folderUrl + '\');">Delete</a>' + "</td>";
      dynamicTable += "</tr>";
    }

    document.getElementById("datatable").innerHTML = dynamicTable;

    table = $('#table_id').DataTable();
  },
  error: function (err) {

    console.error("Error: ", err);
  }
});

}

這工作正常。但我的要求是,如果文件夾名稱是 Improvement-Projects-2020,那么只有我可以檢索該文件夾數據,我也想檢索 Improvement-Projects-2019 文件,請幫助我

使用promise,你可以請求多個請求並從這些請求中獲取返回數據,然后綁定數據。

示例腳本:

<script>
    var d = new Date();
var n = d.getFullYear();
fileGetAction("/sites/dev/QualityCI" + '/Improvement-Projects-' + n.toString(),"/sites/dev/QualityCI" + '/Improvement-Projects-' + (n-1).toString());

function fileGetAction(...args) {
if(arguments.length==0){
    console.log("There is no corresponding folder in the library")
    return;
}    
    var reqs=new Array()
$('#table_id tbody').empty();
    var dynamicTable = "";
for(var i=0;i<args.length;i++){
    var folderUrl=args[i]
    var requestURL = _spPageContextInfo.webAbsoluteUrl+ "/_api/web/GetFolderByServerRelativeUrl('" + folderUrl + "')/Files";

reqs[i] = _ajax(requestURL)
}
    Promise.all(reqs).then((result) => {

       var dynamicTable = "";
  for (j = 0; j < result.length; j++) {

      for(var x=0;x<result[j].d.results.length;x++){
          var tableData = result[j].d.results[x]
          dynamicTable += "<tr>";
      dynamicTable += "<td>" + tableData.Name.split('.').slice(0, -1).join('.') + "</td>";
      dynamicTable += "<td>" + '<a href= "' + tableData.ServerRelativeUrl + '"> "' + tableData.Name + '"</a>' + "</td>";
      dynamicTable += "<td class='text-center'>" + '<a class="btn btn-primary delete" onclick="javascript: fileDeleteAction(\'' + tableData.ServerRelativeUrl + '\',\'' +args[j] + '\');">Delete</a>' + "</td>";
      dynamicTable += "</tr>";
      }

    }
        document.getElementById("datatable").innerHTML = dynamicTable;
    table = $('#table_id').DataTable();
}).catch((error) => {
  console.log(error)
})
}

    function _ajax(requestURL){
        return new Promise((resolve, reject) => {
         $.ajax({
  url: requestURL,
  type: "GET",
  headers: {
    "Accept": "application/json;odata=verbose"

  },
             success: function(data) {
        resolve(data)
      },
      error: function(error) {
        reject(error)
      }
})
     })
    }
    </script>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM