我正在尝试使用多部分/相关请求和Google Auth Library在我的google驱动器文件夹上创建一个pdf文件,该文件是我通过Gmail API下载的。
因此,这是Gmail API发送给我的对象。我可以使用base64topdf创建一个pdf文件。
我的问题是将此文件发送到我的google驱动器文件夹。
这是我的基本代码:
const response = await auth.request({
url: 'https://www.googleapis.com/upload/drive/v3/files',
method: 'post',
headers: {
'Content-Type': `multipart/related; boundary=${boundary}`
},
params: {
uploadType: 'multipart'
},
data
});
我尝试了在this page的帮助下通过数据对象发送文件的不同方法,并查看执行以下操作的google's node API代码:
params.uploadType = 'multipart';
const multipart = [
{'Content-Type': 'application/json', body: JSON.stringify(resource)}, {
'Content-Type':
media.mimeType || (resource && resource.mimeType) || defaultMime,
body: media.body // can be a readable stream or raw string!
}
];
const boundary = uuid.v4();
const finale = `--${boundary}--`;
const rStream = new stream.PassThrough();
const isStream = isReadableStream(multipart[1].body);
headers['Content-Type'] = `multipart/related; boundary=${boundary}`;
for (const part of multipart) {
const preamble =
`--${boundary}\r\nContent-Type: ${part['Content-Type']}\r\n\r\n`;
rStream.push(preamble);
if (typeof part.body === 'string') {
rStream.push(part.body);
rStream.push('\r\n');
} else {
part.body.pipe(rStream, {end: false});
part.body.on('end', () => {
rStream.push('\r\n');
rStream.push(finale);
rStream.push(null);
});
}
}
if (!isStream) {
rStream.push(finale);
rStream.push(null);
}
options.data = rStream;
我尝试使用Buffers,普通字符串...我总是最终得到Error: Malformed multipart body.
或PDF,只显示Gmail API对象的数据为纯字符串。
找不到关于如何使用javascript而不使用表单数据的任何内容!任何人都可以帮助我吗?