【问题标题】:Returning image from remote server play framework java从远程服务器播放框架java返回图像
【发布时间】:2017-02-06 13:13:22
【问题描述】:

我尝试返回如下图:

返回ok(new File("http://example.com/dpa/client_name/images/client_log.jpg"));

但控制器中的方法无法从远程服务器获取图像并引发图像未找到异常。

如何使用 java play 框架从远程服务器检索图像并作为响应返回?

【问题讨论】:

  • 为什么不直接将浏览器重定向到远程服务器上的图片?
  • 我必须在他网站的 iframe 中将图像返回给客户请求。
  • 根据 Benchik 在此处的回答:stackoverflow.com/a/20838010/2129212 他正在从本地公用文件夹中读取文件。我想从网络(远程路径)读取它,然后从获取它的函数中返回它。

标签: java playframework response mime-types


【解决方案1】:

只需使用WS API

package controllers;

import play.libs.ws.WSClient;
import play.mvc.Controller;
import play.mvc.Result;

import java.util.concurrent.CompletionStage;
import javax.inject.Inject;


public class HomeController extends Controller {

    @Inject WSClient ws;

    public CompletionStage<Result> index() {
        return ws
          .url("http://www.maine-coon-cat-nation.com/image-files/orange-maine-coon-cat.jpg")
          .get()
          .thenApply(file -> ok(file.getBodyAsStream()).as("image/jpeg"));
    }

}

【讨论】:

  • 感谢一百万您的回答。如何进一步使用 CompletionStage?我想通过 JSON 向目标用户发送数据。
  • public CompletionStage&lt;Result&gt; index() 是“输出点”,您需要将其“绑定”到conf\routes 文件中的url,例如GET / controllers.HomeController.index。您可以在文档“playframework.com/documentation/2.5.x/…”中阅读如何提供 JSON 响应我不确定通过 JSON 发送图像是一个好主意,您需要以某种方式对其进行编码,例如 base64 左右
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多