首先定義實體物件
/** * 圖片資料封裝 */ @Data public class PgNewImageDto { /** * 檔案型別 */ private String fileType; /** * 檔案資料 */ private String fileData; }
轉換實現
/** * 輸入流轉換為實體物件 * @param inputStream * @return * @throws Exception */ private PgNewImageDto convertToImgDto(InputStream inputStream) throws Exception { PgNewImageDto imageDto=new PgNewImageDto(); //複製流 ByteArrayOutputStream outputStream1= TyIoUtil.cloneInputStream(inputStream); InputStream inputStream1= new ByteArrayInputStream(outputStream1.toByteArray()); String fileType=TyIoUtil.getFileType(inputStream1,false); imageDto.setFileType(fileType); InputStream inputStream2= new ByteArrayInputStream(outputStream1.toByteArray()); String fileBase64=TyOkHttpUtil.inputStreamToBase64(inputStream2); imageDto.setFileData(fileBase64); // //檔案儲存則啟用下面程式碼 // String fileName= UUID.randomUUID().toString(); // String foldName=imagesPath.replace("\\","/")+"temp/"; // String filePath=foldName+fileName+imageDto.getFileType(); // InputStream inputStream3= new ByteArrayInputStream(outputStream1.toByteArray()); // TyIoUtil.saveFile(inputStream3,foldName,fileName,imageDto.getFileType()); inputStream1.close(); inputStream2.close();
// inputStream3.close();
return imageDto; }
呼叫示例
//拼接引數 String xbUserToken=checkResult.getData().toString(); Map<String, Object> listKv=new HashMap<>(); listKv.put("xbUserToken",xbUserToken); listKv.put("xbAppToken",XbAppToken); //拼接路徑 InputStream inputStream=null; try { //基礎路徑 String tgFullUrl=tgRootUrl+URL_NEWS_IMAGE_PATH+picId; inputStream=TyOkHttpUtil.doGetFileStream(tgFullUrl,listKv); if(ObjectUtil.isEmpty(inputStream)) { objRet.setMsg("圖片介面獲取失敗."); return objRet; } } catch (Exception ex){ log.error(ex.getMessage(),ex); objRet.setMsg("圖片介面獲取失敗."); return objRet; } try { PgNewImageDto imageDto=convertToImgDto(inputStream); inputStream.close(); objRet.setSuccess(true); objRet.setData(imageDto); objRet.setMsg("檔案下載完成"); } catch (Exception ex){ log.error(ex.getMessage(),ex); objRet.setSuccess(false); objRet.setMsg("檔案下載失敗"); } finally { if(inputStream!=null){ try { inputStream.close(); } catch (Exception ex){ } } }
至此,執行效果達到預期目的,具體效果圖省略