Java-InputStream转Base64

首先定义实体对象

/**
 * 图片数据封装
 */
@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){

                    }
                }
            }

至此,执行效果达到预期目的,具体效果图省略

 

posted @ 2024-03-15 15:56  李文学  阅读(1052)  评论(0)    收藏  举报