gpt4 book ai didi

playframework-2.0 - Play Framework 2 显示来自数据库或外部资源的图像

转载 作者:行者123 更新时间:2023-12-04 07:46:43 25 4
gpt4 key购买 nike

我在显示从外部存储检索到的图像时遇到了实际问题,在本例中为 S3,但很可能是一个数据库。

我的问题是如何显示不在文件系统上的图像,即它们是对象中的文件/图像。我正在使用 Play 2.1.1

查看

    @for(image <- receipt.imageIds){
<h4>@image.getId</h4>
<h3><img src="@controllers.Application.getImage(image.getId)" /></h3>
}

路线

GET         /receipt/image/:id      controllers.Application.getImage(id:String)

Controller (我在这里尝试了一些选项,但这是其他人似乎使用的选项)

public static Result getImage(final String id) {
try {
ImageId image = AWS_S3_SERVICE.getImage(id);
return ok(extractBytes(image.getImage())).as("image/jpeg");
} catch (Exception ex) {
ex.printStackTrace();
}
return ok();

如果我查看未显示的图像的生成输出,这就是我所看到的:

<img src="SimpleResult(200, Map(Content-Type -&gt; image/jpeg))">

最佳答案

您以这种方式浪费了您自己的大量资源,因为您需要将文件从存储传输到应用程序,然后将其重写为输出,最后发送给客户端。这些操作中的每一个都会产生一些成本并且是多余的。

您应该使用直接链接到 src 中的文件属性,并另外考虑在本地数据库上缓存存储桶的文件列表,这样您就不需要每次都向 S3 询问路径...

它可能是这样的:

<img src="@utils.MyS3.getImagePath(image.getId)" />

在哪里getImagePath方法只返回字符串,如 http://s3.amazonaws.com/mybucket/myfile.jpg通过 id 从您的数据库/缓存解析。

关于playframework-2.0 - Play Framework 2 显示来自数据库或外部资源的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21221444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com