Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AWS S3获取损坏的图像_Javascript_Node.js_Typescript_Amazon S3_Aws Sdk - Fatal编程技术网

Javascript AWS S3获取损坏的图像

Javascript AWS S3获取损坏的图像,javascript,node.js,typescript,amazon-s3,aws-sdk,Javascript,Node.js,Typescript,Amazon S3,Aws Sdk,我需要从S3创建更小版本的图像。当我通过s3.getObject调用datastorage时,我接收到损坏的图像文件,但在s3中它被正确保存。 我尝试使用s3.getObject并尽可能设置wait。我还将接收图像保存到本地,以便在使用sharp修改之前进行检查。在S3和我的应用程序之间发送图像有问题 export const s3Config:S3.ClientConfiguration={ accessKeyId:process.env.AWS_ACCESS_KEY_ID, secretA

我需要从S3创建更小版本的图像。当我通过s3.getObject调用datastorage时,我接收到损坏的图像文件,但在s3中它被正确保存。

我尝试使用s3.getObject并尽可能设置wait。我还将接收图像保存到本地,以便在使用sharp修改之前进行检查。在S3和我的应用程序之间发送图像有问题

export const s3Config:S3.ClientConfiguration={
accessKeyId:process.env.AWS_ACCESS_KEY_ID,
secretAccessKey:process.env.AWS\u SECRET\u ACCESS\u KEY,
区域:process.env.AWS\u默认\u区域,
};
异步下载程序(url:string)
{
常量路径部分:字符串[]=url.split('/');
常量imageParts:string[]=pathParts[5]。拆分('.');
const path=pathParts[4].concat('/',pathParts[5]);
常量名称:string=imageParts[0];
const nameSmall=name+'_small.+imageParts[imageParts.length-1];
const test=name+'_test.+imageParts[imageParts.length-1];
this.logger.info(`Image path:${path}`);
AWS.config.update(s3Config);
const s3=新的AWS.s3();
等待s3.getObject(
{
Bucket:mediaBucket,Key:path
},
函数(错误、数据){
if(错误!=null){
log(“检索对象失败:+错误”);
}否则{
log(“加载的”+data.ContentLength+“字节”);
}
}
)
.承诺
。然后(异步数据=>{
等待fs.createWriteStream('./images/'+test).write(data.Body,如有);
//tslint:禁用下一行
等待sharp(data.Body,如有)。调整大小(100)。toFile('./images/'+nameSmall,(err,info)=>{
this.logger.info('err:',err);
this.logger.info('info:',info);
});
})
}

我希望right以正确的形式接收图像,但实际输出是损坏的。

这里不需要处理文件流,只需
等待新的承诺((解析,拒绝)=>fs.writeFile('./images/'+test,data.Body as any,err=>err?拒绝(err):resolve())
。让我知道你的进展如何,如果这有效,我会发布一个答案。我试图使用你的部分代码,但仍然收到来自S3的损坏图像