要在AWS S3中实现图像预览而不是下载,您可以使用AWS Lambda和API Gateway来创建一个简单的API端点。以下是实现此功能的一种可能方法的代码示例:
const AWS = require('aws-sdk');
const s3 = new AWS.S3();
exports.handler = async (event) => {
const { key } = event.queryStringParameters; // 从查询字符串中获取图像的S3键
// 从S3获取图像对象
const getObjectParams = {
Bucket: 'your-bucket-name',
Key: key,
};
try {
const imageObject = await s3.getObject(getObjectParams).promise();
// 返回预览图像的数据和MIME类型
return {
statusCode: 200,
headers: {
'Content-Type': imageObject.ContentType,
},
body: imageObject.Body.toString('base64'),
isBase64Encoded: true,
};
} catch (error) {
console.log(error);
return {
statusCode: 500,
body: 'An error occurred while retrieving the image.',
};
}
};
在AWS Lambda控制台中创建该函数并设置所需的IAM角色。
随后,在AWS API Gateway中创建一个REST API,并为其添加一个资源和方法。将方法的集成类型设置为“Lambda函数”,并选择先前创建的Lambda函数。确保在方法设置中启用CORS(跨源资源共享)以便允许跨域访问。
部署API并获取API端点URL。
现在,您可以通过调用API端点URL并将图像的S3键作为查询字符串参数传递来获取图像的预览。该API将返回图像的数据和MIME类型,使您能够在浏览器中显示图像预览而不是下载。
请注意,上述示例假定您已经正确配置了AWS SDK和IAM角色,并且已将图像上传到了正确的S3存储桶中。