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

如何在SharePoint Online/Office 365中使用SharePoint托管的应用程序设置品牌文件?,sharepoint,office365,sharepoint-online,sharepoint-apps,sharepoint-jsom,Sharepoint,Office365,Sharepoint Online,Sharepoint Apps,Sharepoint Jsom,我正在寻找SharePoint托管应用程序解决方案,该解决方案将向SharePoint Online/Office 365环境提供品牌文件(JS/CSS/Images) 我得到了一篇很好的文章来实现这一点,并尝试实现如下链接所示的相同功能: 此解决方案不适用于我,在执行应用程序时,我遇到以下错误: 无法将文件设置到主机web。错误:来自服务器的意外响应数据。以下是导致错误的代码: // utility method for uploading files to host web.. upload

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

我得到了一篇很好的文章来实现这一点,并尝试实现如下链接所示的相同功能:

此解决方案不适用于我,在执行应用程序时,我遇到以下错误:
无法将文件设置到主机web。错误:来自服务器的意外响应数据。
以下是导致错误的代码:

// 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);
}
//将文件上载到主机web的实用方法。。
uploadFileToHostWebViaCSOM=函数(serverRelativeUrl、文件名、内容){
var createInfo=new SP.FileCreationInformation();
createInfo.set_内容(新的SP.Base64EncodedByteArray());
对于(变量i=0;i
请建议我,这段代码中会出现什么问题?或者向我推荐另一种方法/参考,在这种方法/参考中,我可以创建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];
        }
    }
}
//首先获取应用程序上下文,您将需要它。
var currentcontext=new SP.ClientContext.get_current();
//然后获取主机web上下文
var hostUrl=decodeURIComponent(getQueryStringParameter(“SPHostUrl”);
var hostcontext=new SP.AppContextSite(currentcontext,hostUrl);
函数getQueryStringParameter(参数){
var params=document.URL.split(“?”[1]。split(“&”);
var strParams=“”;
对于(变量i=0;i
以下是一些参考资料:

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

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


是否有更多信息,如内部异常,提供了有关实际意外响应的更多详细信息?@Ola:我试图获取堆栈跟踪,但它给了我空值。我使用
args.get\u message()
仅收到相同的消息。除了
get\u message(),args.get\u errorTraceCorrelationId()
您首先是否设置了.txt扩展名?