await newPage.setRequestInterception(true);
const xRequest = await new Promise(resolve => {
newPage.on('request', interceptedRequest => {
interceptedRequest.abort(); //stop intercepting requests
resolve(interceptedRequest);
});
});
const options = {
encoding: null,
method: xRequest._method,
uri: xRequest._url,
body: xRequest._postData,
headers: xRequest._headers
}
const cookies = await newPage.cookies();
options.headers.Cookie = cookies.map(ck => ck.name + '=' + ck.value).join(';');
const res = await request(options);
我正在使用 puppeteer 并尝试下载一些 pdf/docx 并将 res 作为缓冲区。如何从缓冲区 (res) 检查文件类型并将其转换为该特定文件类型。
答案 0 :(得分:0)
如果您手中有缓冲区,则不需要“转换”它。 例如,您可以将其写入文件,例如,您将能够使用资源管理器打开它。
fs.writeFile('filename.pdf', buffer);
此外,您的问题的解决方案已经存在于此处:Detecting file type from buffer in node js? 在发布之前,请花点时间找到有关堆栈溢出的现有解决方案。
如果第一个字节是 [0x25, 0x50, 0x44, 0x46],则缓冲区包含 pdf 你可以像这样简单地测试它:
var isPdf = (buffer[0] == 0x25 && buffer[1] == 0x50 && buffer[2] == 0x44 && buffer[3] == 0x46);