我想从s3中获取图像并将其显示在HTML页面上。
Angular HTML文件:
<section data-ng-controller="myCtrl">
<img ng-src="{{src}}" width="200px" height="200px">
</section>
Angular Controller文件:
angular.module('users').controller('myCtrl', ['$scope',function($scope) {
var s3 = new AWS.S3();
s3.getObject({Bucket: 'mybucket', Key: 'myimage.jpg'},function(err,file){
//code?? to display this image file in the img tag
//$scope.src=file????....obviously it wont work
});
}]);
我找到了一个名为FileReader的东西,并尝试了这个:
var reader = new FileReader();
reader.onload = function(event) {
$scope.src = event.target.result;
}
reader.readAsDataURL(file);
但显示错误:
Uncaught TypeError:无法在“FileReader”上执行“readAsDataURL”:参数% 1的类型不是“Blob”。
请帮助我的代码显示图像文件中的img标记
我的S3存储桶不是公共的
编辑:
我对s3不感兴趣。我想知道的是
如何使用HTML image标记以文件对象(s3 obj)的形式显示JavaScript代码中的图像
5条答案
按热度按时间ozxc1zmp1#
你不“获取”图像显示。您只需将图像URL指向它们存储的位置(在您的情况下为S3)。因此,不是拉取单个对象,而是拉取该桶中的文件列表(
bucket.listObjects
),然后将它们添加到缩略图/图像的源中。这里假设文件具有读取权限。出于显而易见的原因,如果没有公共读取权限,它们将无法访问。
**编辑:**根据评论,问题是寻求在页面上加载实际图像。具体操作方法如下:
你从S3得到的数据是一个字节数组。您需要将其转换为base64 encoded数据URI。encode函数借用自here。下面是一个删除了凭据的工作jsFiddle。
pcww981p2#
从s3中获取图像的完整实现与承诺-享受!
zrfyljdw3#
如果你的S3文件是公开的(你必须改变它,默认情况下它不是公开的),你可以从这个模式中获取url:
因此,如果区域是eu-west-1,则如下所示:
kmb7vmvb4#
尽管尝试了很多东西,我还是得到了:
我浏览了一下库,发现在上传时,你可以将ACL设置为以下任何属性:
"private"|"public-read"|"public-read-write"|"authenticated-read"|"aws-exec-read"|"bucket-owner-read"|"bucket-owner-full-control"|string;
我在上传时进行了以下更改:
这对我很有效。任何对此感到困惑的人都可以尝试这种方法。
ezykj2lf5#
你只需要提到存储在s3中的图像的url。
这个应该能用