我正在使用puppeteer,并且我必须在S3上上传屏幕截图。 我正在使用带有签名URL的访存PUT API,并且我的图像是png格式。 每当我遇到“无法提取”错误时。我尝试过将图像存储在内存中并保存在本地存储中,但是它们都不起作用。
答案 0 :(得分:0)
await page.evaluate(async(signedUrl,screenshot) =>{
(function generateXHRRequest(){
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.onreadystatechange = function () {
if (xhr.readyState === 4 && xhr.status === 200) {
console.log(JSON.stringify(xhr.response));
}
};
xhr.open("PUT", signedUrl);
xhr.setRequestHeader("Cache-Control", "no-cache");
xhr.setRequestHeader('Content-Type', 'image/png');
xhr.setRequestHeader('Accept', 'image/png');
xhr.setRequestHeader('Access-Control-Allow-Origin','*');
xhr.setRequestHeader('Access-Control-Allow-Credentials', 'true');
xhr.send(screenshot.data);
})();
},signedUrl,screenshot);
})
我捕获了屏幕截图并将其保存在内存中。现在将其传递给上面的函数。 在这里,字节数组作为文本从S3复制到文件,当我手动下载文件时,将下载'.txt'文件。