我面臨一個獨特的問題,我無法理解背後的原因。來自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
很高興你想通了,我添加了我的評論作爲答案,因爲它是答案:) –