2016-11-22 75 views
0

我试图上传和下载文件到SharePoint服务器使用sp-request库的Node.js和SHAREPOINT REST API
我能够处理文本文件,但当涉及到其他类型的文件(图像,docx ...),他们总是最终损坏。
所以我想知道,如果我应该使用其他方法来读取和写入我的Node.js代码中的文件。

上传方法:如何处理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

原来我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': '*', 
        } 
       }) 
相关问题