我尝试使用sp-request库为Node.js和SHAREPOINT REST API上传和下载文件到SharePoint服务器
我能够处理文本文件,但是当涉及到其他类型的文件(图像,docx ......)时,它们总是会被破坏。
所以我想知道,我是否应该使用其他方法来读取和编写Node.js代码中的文件。
上传方法:
fs.readFile('file1.png', 'utf8', function (err, file) {
spr.requestDigest('http://vm2008sharepo/')
.then(function (digest) {
return spr.post('http://vm2008sharepo/_api/web/getfolderbyserverrelativeurl(\'Documents\')/Files/Add(url=\'file1.png\')', {
body: file,
headers: {
'X-RequestDigest': digest,
'X-HTTP-Method': 'POST',
'IF-MATCH': '*',
}
})
.then(postResult => {
console.log("File Added");
});
})
.catch(function (err) {
console.log(err.stack);
});
});
下载方式:
var file = fs.createWriteStream("file2.odt");
var path = 'file2.odt';
spr.requestDigest('http://vm2008sharepo/')
.then(function (digest) {
spr.get('http://vm2008sharepo/_api/web/GetFileByServerRelativeUrl(\'/Documents/file2.odt\')/$value')
.then(function (response) {
try {
fs.writeFile(path, response.body);
console.log("File Downloaded");
} catch (error) {
console.log(error.stack);
}
});
})
.catch(function (err) {
console.log(err.stack);
});
答案 0 :(得分:0)
事实证明我的 HTTP 调用正在以 JSON 格式发送文件,我只需通过在代码中添加一行来阻止这种情况:
return spr.post('http://vm2008sharepo/_api/web/getfolderbyserverrelativeurl(\'Documents\')/Files/Add(url=\'file1.png\')', {
body: file,
json: false,
headers: {
'X-RequestDigest': digest,
'X-HTTP-Method': 'POST',
'IF-MATCH': '*',
}
})