2017-10-05 81 views
0

我正在嘗試使用Angular JS顯示Amazon S3 Bucket中的圖像。如何在angularjs中顯示來自Uint8Array的圖像

我的亞馬遜S3 CORS配置如下: -

<?xml version="1.0" encoding="UTF-8"?> 
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> 
<CORSRule> 
    <AllowedOrigin>*</AllowedOrigin> 
    <AllowedMethod>GET</AllowedMethod> 
    <AllowedMethod>POST</AllowedMethod> 
    <AllowedMethod>PUT</AllowedMethod> 
    <MaxAgeSeconds>3000</MaxAgeSeconds> 
    <AllowedHeader>*</AllowedHeader> 
</CORSRule> 
</CORSConfiguration> 

HTML標籤

<img ng-src="{{imgSrc}}"> 

角JS代碼檢索圖片如下: -

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

     var bucket = new AWS.S3({ params: { Bucket: "MyBucket" } }); 

     bucket.getObject({ Key: 'Datetime.png' }, function (err, file) { 
     $scope.imgSrc= ""; 
     }); 
    } 

該文件。getObject()方法內部的體參數爲Uint8Array。

請幫我在這: -

  1. 這是標準的編碼時 採用了棱角分明的JS從Amazon S3檢索圖像?應file.Body總是作爲Uint8Array
  2. 如何將Uint8Array對象轉換爲圖像並顯示在 網頁內?請注意,上傳的圖片可以像 JPEG/PNG/GIF等

任何格式這將是真正幫助,如果任何人都可以提供工作示例。

+0

你能告訴(打印)在'uint8'數組前4個字節?像'alert(「bytes:」+ myArray [0] +「,」+ myArray [1] +「,」+ myArray [2] +「,」+ myArray [3]);'然後粘貼到這裏。你有一個關於base64的答案,但是你的數據可能不是這種格式。我們需要正確的信息。 –

+1

警報前4字節: - 字節:137,80,78,71 – user1843970

回答

1

嘗試這樣的:

$scope.retrieveImage = function() { 
    var mypath = "https://mybucket.s3.amazonaws.com/Datetime.png"; 
    mypath = mypath.substr(1); 
    AWS.config.update({ 
     accessKeyId: "MyAccessKey", 
     secretAccessKey: "MySecretKey" 
    }); 
    var bucketInstance = new AWS.S3(); 
    var params = { 
     Bucket: "MyBucket", 
     Key: mypath 
    } 
    bucketInstance.getObject(params, function(err, data) { 
     if (data) { 
      $scope.imgSrc= "data:image/jpeg;base64," + encode(data.Body); 
     } else { 
      console.log('error::', err); 
     } 
    }); 
} 
+0

感謝您的示例示例。我嘗試過,但我面臨以下困難: - 1)我有沒有使用mypath.substr(1)?每當我給「我的鑰匙」我的路徑,然後我得到錯誤爲「指定密鑰不存在」。 2)你可以定義函數「encode(data.Body)」嗎? – user1843970

相關問題