提取Put API以使用签名的URL上传图像

时间:2019-02-11 05:59:53

标签: amazon-s3 puppeteer fetch-api

我正在使用puppeteer,并且我必须在S3上上传屏幕截图。 我正在使用带有签名URL的访存PUT API,并且我的图像是png格式。 每当我遇到“无法提取”错误时。我尝试过将图像存储在内存中并保存在本地存储中,但是它们都不起作用。

1 个答案:

答案 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'文件。