如何在Node.js中处理不同的文件类型

时间:2016-11-22 09:14:26

标签: node.js file sharepoint readfile writefile

我尝试使用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);
            });

1 个答案:

答案 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': '*',
                    }
                })