在开发过程中,由于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); //将处理好的数据赋值给当前对象