如何从 Microsoft Graph 接收转换后的文件 api

How to receive a converted file from microsoft graph api

我在保存从 Microsoft Graph api 收到的 pdf 文件时遇到问题。我正在使用我构建的配置进行以下调用:

const convertConfig = {
    headers: {
        Authorization: <my token>
    }
};
convertConfig.headers['Content-Type'] = 'application/pdf';
const convertRes = await axios.get(`https://graph.microsoft.com/v1.0/<myTenantId>/sites/<mySite>/drive/root:/<myPath>:/content?format=pdf`, convertConfig);
{
  status: 200,
  statusText: 'OK',
   
  ... // snipped data 

  data: <pdf data here as a string in the form 
    '%PDF-1.7\r\n' +
    '%����\r\n' +
    '1 0 obj\r\n' +...>
}

但是,当手动保存或上传此文件时,pdf 最终为空白,但页数适当。例如,我可以这样保存:

fs.writeFileSync('some.pdf', convertRes.data);

保存的 pdf 只是空白页。

这是我的主要问题,我在某个地方滥用了这些数据或没有正确请求某些东西,因为当我使用邮递员发出请求时,响应实际上包含了内容!

是否有一些我没有包含在调用中的东西,或者我没有对数据做些什么来正确处理它作为 pdf 数据?

您得到的响应是一个流,您可以通过管道将其传输到文件系统。这是使用 Axios 的方法。

const writer = fs.createWriteStream('file.pdf');

axios({
    method: 'get',
    url: 'https://graph.microsoft.com/v1.0/sites/site-id/drive/root:/file.docx:/content?format=pdf',
    responseType: 'stream',
    headers: {
        Authorization: "eyJ0..."
    }
}).then(response => {
    response.data.pipe(writer);
});