如何在 Node.js 中处理不同的文件类型
How to handle different file types in Node.js
我正在尝试使用 Node.js 和 SHAREPOINT REST API
的 sp-request 库将文件上传和下载到 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);
});
原来我的 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': '*',
}
})
我正在尝试使用 Node.js 和 SHAREPOINT REST API
的 sp-request 库将文件上传和下载到 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);
});
原来我的 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': '*',
}
})