资源文件验证器--ResourceValidator
来源:互联网 发布:单片机中断向量地址是 编辑:程序博客网 时间:2024/06/05 22:36
可以验证file字段上传文件的格式大小是否正确
控制层用的SpringMVC框架,用MultipartFile接口file文件
验证用具类:
import java.util.ArrayList;import java.util.List;import org.springframework.web.multipart.MultipartFile;import com.clou.douliu.server.bean.Pair;/** * 资源验证器 * @author dhh * 2015-11-13 * */public class ResourceValidator {/**资源类型**/public static final int IMAGE = 1; public static final int AUDIO = 2;public static final int VEDIO = 3;/**相册照片最大大小 2M **/private static final int MAX_IMAGE_SIZE = 2 * 1024 * 1024; /**最大的音频类问题文件大小 1M **/private static final int MAX_AUDIO_FILE_SIZE = 1 * 1024 * 1024;/**最大的视频类问题文件大小 10M **/private static final int MAX_VEDIO_FILE_SIZE = 10 * 1024 * 1024;// 允许上传的图片类型private static final List<String> allowImageTypeList;private static final List<String> allowAudioTypeList;private static final List<String> allowVedioTypeList;static {allowImageTypeList = new ArrayList<String>();allowAudioTypeList = new ArrayList<String>();allowVedioTypeList = new ArrayList<String>();/**图片允许格式 **/allowImageTypeList.add("image/bmp");allowImageTypeList.add("image/png");allowImageTypeList.add("image/gif");allowImageTypeList.add("image/jpeg");allowImageTypeList.add("image/x-png");allowImageTypeList.add("image/pjpeg");allowImageTypeList.add("image/jpg");allowImageTypeList.add("image/*");/**语音允许格式**/allowAudioTypeList.add("audio/mp3");allowAudioTypeList.add("application/octet-stream"); //amr/**视频允许格式**/allowVedioTypeList.add("video/mp4");}/** * 是否是合法资源 * @param file 资源文件 * @param fileType 资源类型,分成3中,@see ResourceValidator 中的定义 * @return */public static Pair<Boolean,String> isValidResouce(MultipartFile file , Integer fileType){//检查file是否合法Boolean valid = false;if(file.getName() == null && file.getName().equals("")){return Pair.makePair(valid, "文件名不能为空");}if(fileType == IMAGE){if(!filterType(file.getContentType(),allowImageTypeList)){return Pair.makePair(valid, "图片格式不允许");}if(!filterFileSize(file , MAX_IMAGE_SIZE)){return Pair.makePair(valid, "图片大小不能超过" + (MAX_IMAGE_SIZE/1024) + "K");}}else if (fileType == AUDIO){if(!filterType(file.getContentType(),allowAudioTypeList)){return Pair.makePair(valid, "语音格式不允许");}if(!filterFileSize(file , MAX_IMAGE_SIZE)){return Pair.makePair(valid, "语音大小不能超过" + (MAX_AUDIO_FILE_SIZE/1024) + "K");}}else if(fileType == VEDIO){if(!filterType(file.getContentType(),allowVedioTypeList)){return Pair.makePair(valid, "视频格式不允许");}if(!filterFileSize(file , MAX_IMAGE_SIZE)){return Pair.makePair(valid, "视频大小不能超过" + (MAX_VEDIO_FILE_SIZE/1024) + "K");}}valid = true;return Pair.makePair(valid, "合法资源");}private static boolean filterType(String type ,List<String> library) {for (String temp : library) {if (temp.equals(type)){return true;}}return false;}/** * 过滤图片的大小 * @param multipartFile * @return */private static boolean filterFileSize(MultipartFile multipartFile , Integer size) {if(multipartFile.getSize() <0 || multipartFile.getSize() > size){return false;}return true;}}
import java.io.Serializable;/** * 值对 * 方法需要返回两个值时,可使用Pair减少代码量 * @author rabbit * * @param <F> * @param <S> */public final class Pair<F, S> implements Serializable{private static final long serialVersionUID = 1L;public Ffirst;public Ssecond;public Pair(F f, S s){this.first = f;this.second = s;}/** * 通过值创建值对 * @param <FT> * @param <ST> * @param f * @param s * @return */public static <FT, ST> Pair<FT, ST> makePair(FT f, ST s){return new Pair<FT, ST>(f, s);}private static <T> boolean eq(T o1, T o2){return o1 == null ? o2 == null : o1.equals(o2);}@SuppressWarnings("unchecked")public boolean equals(Object o){Pair<F, S> pr = (Pair<F, S>) o;if(pr == null)return false;return eq(first, pr.first)&& eq(second, pr.second);}private int h(Object o){return o == null ? 0 : o.hashCode();}public int hashCode(){int seed = h(first);seed ^= h(second) + 0x9e3779b9 + (seed << 6) + (seed >> 2);return seed;}@Overridepublic String toString() {StringBuffer sb = new StringBuffer();sb.append("first=").append(first).append(".\t").append("second=").append(second);return sb.toString();}}
附录:
控制层SpringMVC的接口代码
/** * 环信推送 * @param broadcastBean * @param request * @param response * @param map * @return */@RequestMapping(value = "addEasemobPushTask.do")@ResponseBodypublic AjaxResponseBean addEasemobPushTask( @ModelAttribute EasemobPushBean pushBean, HttpServletRequest request, HttpServletResponse response, ModelMap map) { // 得到当前session中的用户 User user = this.getUserInSession(request); // 权限验证 boolean flag = PermissionCheck.check(user, FinalValues.MAJIA_OPERATION_PERMISSION); if (!flag) { // 没有权限 return AjaxResponseBean.getNoPermissionResponseBean(); } try { // 将查询出的结果返回给客户端, Pair<Integer, String> result = this.businessFactory.broadcastBusiness.addEasemobPushTask(pushBean); Integer count = result.first; if(count > 0){return AjaxResponseBean.getAjaxResponseBean(AjaxResponseBean.DWZ_STATUSCODE_OK, "添加【" + count +"】条推送任务成功");}else{return AjaxResponseBean.getAjaxResponseBean(AjaxResponseBean.DWZ_STATUSCODE_ERROR, result.second);} } catch (Exception e) { logger.error("添加推送任务失败" + e.getMessage()); e.printStackTrace(); return AjaxResponseBean.getErrorResponseBean(); }}
实体bean:
public class EasemobPushBean implements Serializable{private static final long serialVersionUID = 1L;private Integer msgType; //消息类型private MultipartFile receivedExcelFile; //excel为接受者idprivate Integer sendId ; //发送者IDprivate Integer minTime; //延迟最小时间private Integer maxTime; //延迟最大时间//富文本消息private String content;//图文链接消息private String linkTitle;private String linkAddr;private String linkContent;private MultipartFile linkImages; //图片文件//图片消息private MultipartFile images; //图片文件//语音消息private MultipartFile audios; //音频文件//视频消息private MultipartFile videos; //视频文件private MultipartFile videosShot; //视频文件缩略图}
1 0
- 资源文件验证器--ResourceValidator
- struts资源文件验证表单
- struts资源文件验证表单代码
- 使用HttpClient上传文件资源(已验证)
- Struts框架中的表单验证与资源文件
- Struts框架中的表单验证与资源文件
- SL - 整理 - 将验证做到资源文件中
- 验证HACMP资源切换
- 资源文件
- 资源文件
- 资源文件
- 资源文件
- 资源文件
- 资源文件
- 资源文件
- 资源文件
- 资源文件
- 资源文件
- UVA 题目10739 String to Palindrome(区间DP)
- uitableViewCell 左滑多个按钮
- Android Adb指令
- 多线程学习--多线程中读写锁
- Struts2 iterator遍历集合
- 资源文件验证器--ResourceValidator
- Centos下配置node.js环境
- Exception in thread "Druid-ConnectionPool-Destory" java.lang.OutOfMemoryError: PermGen space
- 封装BerkeleyDB 2.0
- linux 简单命令笔记
- [论文笔记5]A Discriminatively Trained, Multiscale, Deformable Part Model
- 键盘按键数字对照表
- Spring学习总结(4)——Spring AOP教程
- SAP物料批次管理配置及操作手册