Amazon s3 使用签名url获取Put API以上载图像
我使用木偶演员,我有一个要求,我必须上传S3上的截图。 我正在使用带有签名url的fetch-PUT api,我的图像是png格式的。 每次我收到错误“无法获取”。我曾尝试将图像保存在内存和本地存储中,但两者都不起作用Amazon s3 使用签名url获取Put API以上载图像,amazon-s3,puppeteer,fetch-api,Amazon S3,Puppeteer,Fetch Api,我使用木偶演员,我有一个要求,我必须上传S3上的截图。 我正在使用带有签名url的fetch-PUT api,我的图像是png格式的。 每次我收到错误“无法获取”。我曾尝试将图像保存在内存和本地存储中,但两者都不起作用 await page.evaluate(async(signedUrl,screenshot) =>{ (function generateXHRRequest(){ var xhr = new XMLHttpRequest();
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文件被下载。你能分享你的获取代码吗?你在使用cors吗?我可以使用普通的xhr调用将文件上传到s3。但现在我面临另一个问题,我的截图是作为“txt”文件下载的。当我打开它时,我可以看到图像的字节数组是文本。例如:137,80,78,71,13,10,26,10,0,0,0,0,13,73,72,68,82,0,0,3,34,0,0,2,88,8,6,0,0,0158131,82,77,0,0,32,0,73,68,65,841201562362219120,202132501922412391179233141,16,72239,36212,16,18122,9160,20233,82236,88192138,5197222,11182171,63,81217229,1439。。我如何确保图片上传格式正确,下载格式相同?你可以上传一些东西,这很好,但是你能分享上传和下载的代码吗?