繁体   English   中英

来自Amazon S3 Bucket的图像未在第一个请求中显示

[英]Image from Amazon S3 Bucket didn't display in first request

我面临一个独特的问题,我无法理解其背后的原因。

我有Amazon S3帐户,并创建了存储区,以保存上传的图像。 我正在使用以下代码来检索图像。 我的问题很独特,因为当我在第一个请求中检索图像时,它没有在网页上显示任何内容,但是在后续请求后检索了该图像并显示到网页上。

我不明白原因。

Angular JS代码

$scope.retrieveImage = function ()
{
    AWS.config.update({
        accessKeyId: "MY_ACCESS_KEY",
        secretAccessKey: "MY_SECRET_KEY"
    });

    AWS.config.region = "BUCKET_REGION";

    var bucketInstance = new AWS.S3();
    var params = {
        Bucket: "BUCKET_NAME",
        Key: "FILE_NAME"
    }
    bucketInstance.getObject(params, function (err, file) {
        if (file) {
            $scope.imgSrc = "data:" + file.ContentType + ";base64," + encode(file.Body);           
        } else {
            console.log('error::', err);
        }
    });
}

function encode(data) {
    var str = data.reduce(function (a, b) { return a + String.fromCharCode(b) }, '');
    return btoa(str).replace(/.{76}(?=.)/g, '$&\n');
}

问题可能出在AngularJs上,请确认该图像是在AngularJs之外检索的,或者您可以使用Chrome Developer工具监视网络流量,您可能会发现该图像是在每次请求时从Amazon S3返回的,并且您的AngularJs视图不是正确刷新

您应该阅读有关S3数据一致性模型的更多信息

Amazon S3为所有区域中的S3存储桶中的新对象提供PUTS写入后读取一致性,但请注意。 需要说明的是,如果在创建对象之前对键名称发出HEAD或GET请求(以查找对象是否存在),则Amazon S3最终会为写后读取提供一致性。

Amazon S3为覆盖所有区域中的PUTS和DELETES提供了最终的一致性。

这意味着在您放入成功代码后会有一些延迟/延迟。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM