【问题标题】:Read content of SP.File object as text using JSOM使用 JSOM 将 SP.File 对象的内容作为文本读取
【发布时间】:2016-05-19 12:17:59
【问题描述】:

正如标题所示,我正在尝试使用 JSOM 读取一个简单文本文件的内容。为此,我正在使用 Sharepoint 托管的插件,我尝试读取的文件位于文档库中的主机 Web 上。

这是我的 JS 代码:

function printAllListNamesFromHostWeb() {
    context = new SP.ClientContext(appweburl);
    factory = new SP.ProxyWebRequestExecutorFactory(appweburl);
    context.set_webRequestExecutorFactory(factory);
    appContextSite = new SP.AppContextSite(context, hostweburl);

    this.web = appContextSite.get_web();
    documentslist = this.web.get_lists().getByTitle('Documents');

    var camlQuery = new SP.CamlQuery();
    camlQuery.set_viewXml('<View><ViewFields><FieldRef Name="Name"/></ViewFields></View>');
    listitems = documentslist.getItems(camlQuery);

    context.load(listitems, 'Include(File,FileRef)');

    context.executeQueryAsync(
        Function.createDelegate(this, successHandler),
        Function.createDelegate(this, errorHandler)
    );

    function successHandler() {
        var enumerator = listitems.getEnumerator();
        while (enumerator.moveNext()) {
            var results = enumerator.get_current();
            var file = results.get_file();

            //Don't know how to get this to work...
            var fr = new FileReader();
            fr.readAsText(file.get);
        }
    }

    function errorHandler(sender, args) {
        console.log('Could not complete cross-domain call: ' + args.get_message());
    }
}

但是,在我的 succes 回调函数中,我不知道如何提取 SP.File 对象的内容。我尝试使用 HTML5 API 中的 FileReader 对象,但不知道如何将 SP.File 对象转换为 blob。

有人可以帮我推一下吗?

【问题讨论】:

    标签: sharepoint-2013 filereader sharepoint-jsom


    【解决方案1】:

    一旦确定文件 url,就可以使用常规 HTTP GET 请求从服务器加载文件内容(例如,使用 jQuery.get() function

    示例

    该示例演示如何检索库中的文件列表,然后下载文件内容

    loadItems("Documents",
            function(items) {
    
               var promises = $.map(items.get_data(),function(item){
                   return getFileContent(item.get_item('FileRef'));
               });
    
               $.when.apply($, promises)
               .then(function(content) {
                       console.log("Done");
                       //print files content
                       $.each(arguments, function (idx, args) {
                           console.log(args[0])
                       });
                    },function(e) {
                       console.log("Failed");
                    });
            },
            function(sender,args){
                console.log(args.get_message());
            }
        );
    

    在哪里

    function loadItems(listTitle,success,error){
       var ctx = SP.ClientContext.get_current();
       var web = ctx.get_web();
       var list = web.get_lists().getByTitle(listTitle);
       var items = list.getItems(createAllFilesQuery());
       ctx.load(items, 'Include(File,FileRef)');
       ctx.executeQueryAsync(
            function() {
               success(items);          
            },
            error); 
    }
    
    
    function createAllFilesQuery(){
        var qry = new SP.CamlQuery();
        qry.set_viewXml('<View Scope="RecursiveAll"><Query><Where><Eq><FieldRef Name="FSObjType" /><Value Type="Integer">0</Value></Eq></Where></Query></View>');
        return qry;
    }
    
    
    function getFileContent(fileUrl){
        return $.ajax({
            url: fileUrl,
            type: "GET"
        });
    }
    

    【讨论】:

      猜你喜欢
      • 2019-02-10
      • 2011-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      相关资源
      最近更新 更多