簡體   English   中英

如何在瀏覽器中使用 Java Web 服務返回圖像或文件

[英]How to return an image or file using Java web service in Browser

我已經使用 Java 編寫了一個 Web 服務 GET。 我正在傳遞我的 S3 存儲桶中存在的對象(圖像)的名稱。 當我在瀏覽器中運行 GET url 時,我需要從 s3 存儲桶中查看圖像/文件。 但是,我只能返回 S3 url。 因此這就是我在瀏覽器中得到的。 當我在瀏覽器中調用我的 Java Web 服務時,我需要實際顯示圖像或文件需要下載,就像您可以通過在瀏覽器中點擊 S3 對象 Url 來下載一樣。 但在我們的例子中,這需要通過 Java Web 服務來實現。 我該怎么做。 以下是我正在嘗試的。

`@RequestMapping(value ="/getImage", method = RequestMethod.GET)
@ResponseStatus(HttpStatus.OK)
@ResponseBody     
public URL getImage (String inputfile) 
{ 
      AppLogger.info("BlitlineController:createThumbnail:begin");
      ObtainSignedUrl s3Url = new ObtainSignedUrl();
         URL s3url=  s3Url.getSrcSignedUrl(inputfile);
         return s3url;
 }`

根據 url 對瀏覽器的可用性,基本上有兩種方法。

選項1

如果瀏覽器可以訪問S3中圖片的url,並且客戶端可以處理重定向,則適用:

嘗試發送“重定向”,以便瀏覽器可以自己理解這是一個重定向(具有特殊的響應狀態)。 UI 端將理解這一點(瀏覽器應該自動執行)並將直接向 S3 創建一個 http 請求。

這是執行此操作的示例:

@RequestMapping(value = "/getImage", method = RequestMethod.GET)
public void getImage(HttpServletResponse httpServletResponse) {
    s3Url = calculateUrl and convert to string (maybe with encoding)
    httpServletResponse.setHeader("Location", s3Url);
    httpServletResponse.setStatus(302);
}

選項 2

當瀏覽器無法訪問 s3 存儲桶時,此選項適用。 您應該使用 s3 sdk 連接到 AWS,獲取圖像並發送它。

總而言之:

我相信你應該更喜歡第一個選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM