使用gulp spsave通过REST API将文件上传到SharePoint

时间:2016-09-28 14:05:40

标签: node.js rest sharepoint gulp

我正在尝试将文件(PDF)从本地目录上传到SharePoint上的文档库。我有一个gulp构建系统,它可以监视文件夹中的更改,并运行一个通过gulp-spsave管道PDF流的任务

gulp-spsave很不错,因为它抽象出了一个看起来非常复杂的SharePoint REST界面,我可以在其中提供我的凭据,网址和上传文件夹,剩下的就完成了。

但是,我不断获得404.我是SharePoint的新手,并且不太了解网址结构,因此我猜测我没有提供正确的信息。插件。

这是文档库的URL(名为DST):

https://{subdomain}.{customdomain}.com/depts/indirectsales/DST/Forms/AllItems.aspx

这是我的一项任务:

gulp.task('upload', function() {

    var catalog = paths.output + 'catalog.pdf';

    return gulp.src(catalog)
        .pipe(spsave({
            username: '{user}',
            password: '{pass}',
            siteUrl: 'https://{subdomain}.{customdomain}.com/depts/indirectsales/',
            folder: 'DST'
        }));
});

我尝试过siteUrl和文件夹的其他组合无济于事,例如:

siteUrl: 'https://{subdomain}.{customdomain}.com',
folder: 'depts/indirectsales/DST'

有没有人知道给定文档库URL的siteUrl和文件夹的正确字符串是什么?

编辑:看起来我正在尝试连接到本地Sharepoint 2010安装,而spsave仅适用于2013/2016和SPO。有谁知道如何使用REST将文件上传到SP 2010中的文档库?

1 个答案:

答案 0 :(得分:0)

事实证明,我遇到标准REST请求问题的唯一原因是因为我没有使用NTLM对SharePoint进行身份验证。我能够通过节点中的http-ntlm模块执行此操作:

httpntlm.post({
    url: 'http://domain.com/site/_vti_bin/copy.asmx',
    headers: {
        'SOAPAction': 'http://schemas.microsoft.com/sharepoint/soap/CopyIntoItems',
        'Content-Type': 'text/xml; charset="utf-8"'
    },
    username: 'user',
    password: 'pass',
    body: soapEnv,
}, function(err, response) {
    //callback
}