如何从 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);
});
我在保存从 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);
});