首页 > 编程语言 >Java-InputStream转Base64

Java-InputStream转Base64

时间:2024-03-15 16:01:02浏览次数:25  
标签:objRet Java String imageDto Base64 inputStream ex InputStream

首先定义实体对象

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

                    }
                }
            }

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

 

标签:objRet,Java,String,imageDto,Base64,inputStream,ex,InputStream
From: https://www.cnblogs.com/oumi/p/18075620

相关文章

  • 卡码java基础课 | 13.链表的基础操作I
    学习内容:链表基础重点归纳:见例题例题:解:点击查看代码importjava.util.Scanner;//定义链表classLinkedList{//定义链表中的链表节点publicstaticclassNode{intdata;//数据Nodenext;//指针publicNode(intdata){/......
  • Java面向对象的一些学习笔记
    1.Private关键字:(1)private关键字是一个权限修饰符(2)可以修饰成员变量和成员方法(3)被private修饰的成员只能在本类中才能访问(4)针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作(5)提供"setXxx(参数)"方法,用于给成员变量赋值,方法用public修饰(6)提供"getXxx(参数)......
  • Java学习笔记——第十六天
    集合进阶(二)Collection的其他相关知识前置知识:可变参数就是一种特殊形参,定义在方法、构造器的形参列表里,格式是:数据类型...参数名称。特点可以不传数据给它;可以传一个或者同时传多个数据给它;也可以传一个数组给它。作用常常用来灵活地接收数据。注意事项可变参数在方法......
  • Java IO流之Netty实现聊天通信功能
    目录1Netty1.1概要设计1.1.1技术选型1.1.2数据库设计1.1.3通信设计1.1.3.1报文协议格式1.1.3.2报文交互场景1.2Netty简单示例1.2.1pom.xml1.2.2发送和接收1.2.3示例说明1.2.3.1线程阻塞问题1.2.3.2服务端和接收端EventLoopGroup1.3Netty中handler概述1.4聊天服务......
  • java毕业设计-基于springboot开发的会员制医疗预约服务管理信息系统-毕业论文+答辩PPT
    文章目录前言一、毕设成果演示(源代码在文末)二、毕设摘要展示1、开发说明2、需求分析3、系统功能结构三、系统实现展示1、系统功能模块2、管理员功能模块3、医生功能模块3、会员功能模块四、毕设内容和源代码获取总结java毕业设计-基于springboot开发的会员制医疗预......
  • JavaScript逆向之iwencai请求头参数加密过程解析
    iwencai网站实战url:http://iwencai.com/unifiedwap/home/index打开开发者工具,在搜索框中随便输入关键词,看流量包。(如果想将开发者工具的位置进行变换的,可以点击三个点进行切换)只有一条数据包,看看请求数据和响应数据。请求头中有一个特殊的Hexin-V,它的值与Cookie中的v的值......
  • java对ServerSocket的开启和关闭
    在通过tcp对接数据的时候,使用java创建tcp服务端来接收客户端的信息处理数据时发现的问题和解决办法1.服务端虽然可以连接多个客户端,缺只能处理第一个客户端的信息2.服务端关闭时,客户端依然可以发送数据解决办法1.因为当第一个客户端连接之后,服务端会一直读取数据造成阻塞,......
  • 安卓Java面试题 171- 180
    171.简述实现Service不被杀死常驻内存的方式有哪些?(1):如果是安卓自身机制因为系统资源不足的时候杀死你的Service,那么一般情况下会在一段时间之后系统会重启刚刚被杀死的Service那么此时你该做的事就是怎么恢复Service被杀之前app的一些状态了,那么该怎么恢复呢?这里用......
  • Java毕业设计-基于springboot开发的4S店车辆管理系统-毕业论文+答辩PPT(附源代码+演示
    文章目录前言一、毕设成果演示(源代码在文末)二、毕设摘要展示1.开发说明2.需求分析3、系统功能结构三、系统实现展示1、系统登录2、管理员功能模块3、销售员功能模块4、维修员功能模块四、毕设内容和源代码获取总结Java毕业设计-基于springboot开发的4S店车辆管理系......
  • 为什么Java不支持多继承
    1、典型回答在Java语言中,不支持多继承的主要原因是为了简化语言设计和避免潜在的问题(如菱形继承)以及避免多重继承的层次膨胀,同时又因为在实际工作中,确实很少用到多继承,所以在Java语言中,并不支持多继承。而且,虽然Java中不支持多继承,但也给了一些功能上的替代方案,比如实现多......