我面临一个独特的问题,我无法理解背后的原因。来自Amazon S3 Bucket的图像没有显示在第一个请求
我有Amazon S3帐户,并且我创建了存放我上传图片的存储桶。我正在使用以下代码来检索图像。我的问题是独一无二的,因为当我在第一个请求中检索图像时,它不会在网页上显示任何内容,但在随后的请求显示到网页后图像会被检索到。
我无法理解原因。
角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视图只是不正确刷新 –
你是对的。问题在于Angular JS。应用$ scope。$ apply()后,它会在第一次加载时开始显示图像。 – user1843970
很高兴你想通了,我添加了我的评论作为答案,因为它是答案:) –