jeesite附件处理工具类

在开发过程中,由于jeesite将附件上传后以”|”分隔开存入到数据库的字段中,而且进行了encode,所以在跟安卓对接接口的时候,会发现返回的附件类型并不是我们想要的结果,抽出一个工具类备用,亲测没什么问题,
需要注意的是:在接收的实体类中,需要定义List并get/set
`
/**
* 附件细化方法(返回的集合中包含:附件名称,附件路径,附件类型)
* 参数:未处理的附件路径,HttpServletRequest
* 返回值:处理完毕的集合(ps:需要在实体类里定义一下 List)
* */

public static List<DataObj> getAttaUtil(String atta,
            HttpServletRequest request) throws UnknownHostException,
            UnsupportedEncodingException {
        String localhost = XrnUtils.getLocalhost(request); // 获取ip和端口号
        DataObj dataObj = null;
        List<DataObj> dataObjs = new ArrayList<DataObj>();
        if (StringUtils.isNotEmpty(atta) || atta != null) {
            String[] attaArr = atta.split("\\|");
            List<String> list = Arrays.asList(attaArr);
            for (int i = 1; i < list.size(); i++) {
                dataObj = new DataObj();
                String attaGet = list.get(i);
                String suffix = attaGet.substring(attaGet.indexOf(".") + 1);
                String attas = attaGet.substring(attaGet.lastIndexOf("/") + 1,
                        attaGet.indexOf("."));
                String urlStr = attas.replaceAll("%(?![0-9a-fA-F]{2})", "%25"); // 将encode的路径转换为中文字符
                urlStr = URLDecoder.decode(urlStr, "UTF-8"); // 设置编码字符集为utf-8

                dataObj.setAttaKey(urlStr);
                dataObj.setAttaValue(localhost + attaGet);
                dataObj.setAttaSuffix(suffix);
                dataObjs.add(dataObj);
            }
        }
        return dataObjs;
    }` 

调用方式

    String attaVideo = learning.getAttachmentVideo(); //获取待处理的附件字段
    List<DataObj>attaVideoList = XrnUtils.getAttaUtil(attaVideo,request);//调用附件工具类,参数为待处理数据,返回值处理好的附件集合(附件名称,路径,类型)
    learning.setAttaVideoList(attaVideoList); //将处理好的数据赋值给当前对象
阅读更多
换一批

没有更多推荐了,返回首页