我想从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代码中的图像
您无需“获取”要显示的图像。您只需将图像URL指向它们的存储位置即可(在您的情况下为S3)。因此,不要拉单个对象,而是拉该存储桶(bucket.listObjects
)中的文件列表,然后将它们添加到缩略图/图像的源中。
<section data-ng-controller="myCtrl">
<img ng-src="{{s3Url}}{{image.Key}}" width="200px" height="200px" ng-repeat="image in allImageData">
</section>
$scope.s3Url = 'https://s3-<region>.amazonaws.com/myBucket/';
var bucket = new AWS.S3({params: {Bucket: 'myBucket'}});
bucket.listObjects(function (err, data) {
if (err) {
console.log(err);
} else {
console.log(data);
$scope.allImageData = data.Contents;
}
});
假设文件具有读取权限。由于明显的原因,未经公众阅读许可,将无法访问它们。
编辑: 基于评论,问题是试图在页面上加载实际图像。方法如下:
function myCtrl($scope, $timeout) {
AWS.config.update({
accessKeyId: 'YOUR_ACCESS_TOKEN', secretAccessKey: 'YOUR_SECRET'});
AWS.config.region = "YOUR_REGION";
var bucket = new AWS.S3({params: {Bucket: 'YOUR_BUCKET'}});
bucket.getObject({Key: 'happy-face.jpg'},function(err,file){
$timeout(function(){
$scope.s3url = "data:image/jpeg;base64," + encode(file.Body);
},1);
});
}
function encode(data)
{
var str = data.reduce(function(a,b){ return a+String.fromCharCode(b) },'');
return btoa(str).replace(/.{76}(?=.)/g,'$&\n');
}
从S3获得的数据是字节数组。您需要将其转换为base64编码的数据URI。编码功能是从这里借来的。这是一个删除了凭据的有效jsFiddle。
但是宽度和高度较低的图像成功地加载到图像视图中! 有人能告诉我代码有什么问题吗?我做错了什么?我只想从库中导入相机图像,并在图像视图中显示它们!
问题内容: 我已经创建了一个表,其中已通过“ BLOB”保存了图像。我需要将这些图像与其他项目一起显示。但是我不知道如何在同一页面中一起显示这些图像。这是我的php代码,以表格形式显示其他内容。同样,我想相应地显示图像。有什么帮助吗? 问题答案: 正如其他人所提到的,将图像存储在数据库中通常不是一个好主意。 图像不会与另一个页面数据以相同的响应传输。 要显示数据库中的图像,您需要实现一个脚本,给定
我正在尝试在一个自定义主题中实现wooCommerce,我正在基于bootstrap框架构建该主题(因为我对事物的外观很挑剔),所以我正在尝试重新定位wooCommerce产品缩略图库图像。我知道wooCommerce中提供的各种函数和钩子,如wc-template-hooks.php中列出的函数和钩子,它们工作得非常好,但在我的特殊情况下除外。我使用和钩子将产品信息包装在我的引导框架中,就像这样
所以我猜没有注册的ImageReader?我怎么能通过Jaspersoft Studio修复这样的东西? 编辑:我尝试使用java.io.InputStream作为这里建议的类类型,但结果是相同的错误。算是吧。一个很大的区别是,在Jaspersoft Studio中,如果出现错误,您可以将图像设置为显示为空白。如果我使用java.awt.Image,那么这个设置什么也不做。我仍然得到一个错误,报告
问题内容: 该代码非常简单,我不知道为什么它无法工作。 这是指向JSON文件http://webapp.armadealo.com/home.json的链接 这是使用getJSON的代码 我只希望代码显示整个JSON内容。 问题答案: 经过几个月的搜索,我找到了解决方案。因此,我在回答自己的问题。 当不支持JSON时,当我们坚持相同的原产地政策时,我们必须使用填充将JSON换行并使其成为JSONP
app.py result.html