如何在 SharePoint Online/Office 365 中使用 SharePoint 托管应用程序配置品牌文件?

How to provision Branding files using SharePoint Hosted App in SharePoint Online/Office 365?

我正在寻找 SharePoint 托管应用程序解决方案,它将提供品牌文件 (JS/CSS/Images) 到 SharePoint Online/Office365环境.

我得到了一篇非常好的文章来实现这一点,并尝试实现如下所示的相同内容 link:http://www.sharepointnutsandbolts.com/2013/05/sp2013-host-web-apps-provisioning-files.html

此解决方案对我不起作用,在执行应用程序时,出现以下错误: Failed to provision file into host web. Error: Unexpected response data from server. 这是给我错误的代码:

// utility method for uploading files to host web..
uploadFileToHostWebViaCSOM = function (serverRelativeUrl, filename, contents) {
    var createInfo = new SP.FileCreationInformation();
    createInfo.set_content(new SP.Base64EncodedByteArray());
    for (var i = 0; i < contents.length; i++) {

        createInfo.get_content().append(contents.charCodeAt(i));
    }
    createInfo.set_overwrite(true);
    createInfo.set_url(filename);
    var files = hostWebContext.get_web().getFolderByServerRelativeUrl(serverRelativeUrl).get_files();
    hostWebContext.load(files);
    files.add(createInfo);

    hostWebContext.executeQueryAsync(onProvisionFileSuccess, onProvisionFileFail);
}

请给我建议,这段代码可能有什么问题?或者建议我另一个 way/reference,我可以在其中创建 SharePoint 托管的应用程序来配置品牌文件。

提前致谢!

我会使用不同的方法来访问主机 Web 上下文,如下所示:

//first get app context, you will need it.
var currentcontext = new SP.ClientContext.get_current();
//then get host web context
var hostUrl = decodeURIComponent(getQueryStringParameter("SPHostUrl"));
var hostcontext = new SP.AppContextSite(currentcontext, hostUrl);

function getQueryStringParameter(param) {
    var params = document.URL.split("?")[1].split("&");
    var strParams = "";
    for (var i = 0; i < params.length; i = i + 1) {
        var singleParam = params[i].split("=");
        if (singleParam[0] == param) {
            return singleParam[1];
        }
    }
}

这里有一些参考:

https://sharepoint.stackexchange.com/questions/122083/sharepoint-2013-app-create-list-in-host-web

https://blog.appliedis.com/2012/12/19/sharepoint-2013-apps-accessing-data-in-the-host-web-in-a-sharepoint-hosted-app/

http://www.mavention.com/blog/sharePoint-app-reading-data-from-host-web

http://www.sharepointnadeem.com/2013/12/sharepoint-2013-apps-access-data-in.html

此外,这是一个如何部署母版页的示例,但是您在测试期间可能会注意到,用于获取主机 Web 上下文的方法与视频中显示的不一样,您应该使用我使用的方法之前描述过。

https://www.youtube.com/watch?v=wtQKjsjs55I

最后,这是一个如何使用 CSOM 通过控制台应用程序部署品牌文件的示例,如果您足够聪明,您将能够将其转换为 JSOM。

https://channel9.msdn.com/Blogs/Office-365-Dev/Applying-Branding-to-SharePoint-Sites-with-an-App-for-SharePoint-Office-365-Developer-Patterns-and-P