diff --git a/src/main/java/com/nis/interceptor/MultipartFileIntercepter.java b/src/main/java/com/nis/interceptor/MultipartFileIntercepter.java index 7a7e6b97d..ba269b20d 100644 --- a/src/main/java/com/nis/interceptor/MultipartFileIntercepter.java +++ b/src/main/java/com/nis/interceptor/MultipartFileIntercepter.java @@ -1,8 +1,6 @@ package com.nis.interceptor; -import static java.lang.String.format; - import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; @@ -38,17 +36,19 @@ import com.nis.exceptions.MultiPartNewException; import com.nis.util.Configurations; import com.nis.util.Constants; import com.nis.util.FileUtils; +import com.nis.util.StringUtil; public class MultipartFileIntercepter extends CommonsMultipartResolver{ Logger logger = Logger.getLogger(MultipartFileIntercepter.class); - + private Integer functionId=0; protected CommonsFileUploadSupport.MultipartParsingResult parseRequest(HttpServletRequest request)throws MultipartException{ String encoding = determineEncoding(request); - //是否是样例文件 - boolean isSampleFileUpload = request.getRequestURI().contains(Constants.SAMPLE_UPLOAD_URL_KEYWORD); - boolean isDigestFileUpload = request.getRequestURI().contains(Constants.DIGEST_UPLOAD_URL_KEYWORD); + //样例文件URI + boolean isSampleFileUpload = request.getRequestURI().toLowerCase().contains(Constants.SAMPLE_UPLOAD_URL_KEYWORD); + //摘要文件URI + boolean isDigestFileUpload = request.getRequestURI().toLowerCase().contains(Constants.DIGEST_UPLOAD_URL_KEYWORD); FileUpload fileUpload = this.prepareFileUpload(encoding,isSampleFileUpload,isDigestFileUpload); long fileUploadTotalSize=0l; Properties languageProp=getMsgProp(); @@ -67,7 +67,7 @@ public class MultipartFileIntercepter extends CommonsMultipartResolver{ ? ((UploadContext) ctx).contentLength() : contentLengthInt; // CHECKSTYLE:ON - logger.error("上传文件总大小为"+fileUploadTotalSize); + logger.info("上传文件总大小为"+fileUploadTotalSize); /*****************预先获取上传文件的总的大小************/ //验证文件总大小 if(fileUploadTotalSize > fileUpload.getSizeMax() ){ @@ -108,21 +108,35 @@ public class MultipartFileIntercepter extends CommonsMultipartResolver{ */ protected void validFileList(MultiValueMap multipartFile,FileUpload fileUpload,Properties prop,boolean isSampleFileUpload) throws FileSizeLimitExceededException{ String errorInfo=""; - - String fileType=""; + String fileTypes=""; long fileMaxSize=0l; - if(isSampleFileUpload){ - fileType=Constants.SAMPLE_FILE_TYPE; - fileMaxSize=Constants.SAMPLE_SINGLE_FILE_MAX_SIZE; - }else{ - fileType=Constants.DIGEST_FILE_TYPE; + if(functionId.equals(52)){ //digest + fileTypes=Constants.DIGEST_FILE_TYPE; fileMaxSize=Constants.DIGEST_SINGLE_FILE_MAX_SIZE; + }else if(functionId.equals(28)){ //audio + fileTypes=Constants.AUDIO_FILE_TYPE; + fileMaxSize=Constants.AUDIO_SINGLE_FILE_MAX_SIZE; + }else if(functionId.equals(29)){ //video + fileTypes=Constants.VIDEO_FILE_TYPE; + fileMaxSize=Constants.VIDEO_SINGLE_FILE_MAX_SIZE; + }else if(functionId.equals(30)){ //picture + fileTypes=Constants.PICTURE_FILE_TYPE; + fileMaxSize=Constants.PICTURE_SINGLE_FILE_MAX_SIZE; + }else if(functionId.equals(31)){ //voip + fileTypes=Constants.VOIP_FILE_TYPE; + fileMaxSize=Constants.VOIP_SINGLE_FILE_MAX_SIZE; + }else{ + return; } + logger.info("functionId:"+functionId); + logger.info("fileType:"+fileTypes); + logger.info("singleFileMaxSize:"+fileMaxSize); + for (String fileName : multipartFile.keySet()) { MultipartFile file= multipartFile.getFirst(fileName); //文件类型错误 - if(fileType.indexOf(","+FileUtils.getSuffix(file.getOriginalFilename(), false)+",") == -1){ - throw new MultiPartNewException(errorInfo,file.getOriginalFilename(),fileType.substring(0,fileType.length()-1).substring(1),prop,null); + if(fileTypes.indexOf(","+FileUtils.getSuffix(file.getOriginalFilename(), false)+",") == -1){ + throw new MultiPartNewException(errorInfo,file.getOriginalFilename(),fileTypes.substring(0,fileTypes.length()-1).substring(1),prop,null); } if(file.getSize() > fileMaxSize){ throw new MultiPartNewException(errorInfo, file.getOriginalFilename(), file.getSize(), fileMaxSize,prop, null); @@ -203,6 +217,9 @@ public class MultipartFileIntercepter extends CommonsMultipartResolver{ if (curParam == null) { // simple form field multipartParameters.put(fileItem.getFieldName(), new String[] {value}); + if(fileItem.getFieldName().toLowerCase().equals("functionid")){ + functionId=StringUtil.isEmpty(value) ? 0:Integer.parseInt(value); + } } else { // array of simple form fields diff --git a/src/main/java/com/nis/util/Constants.java b/src/main/java/com/nis/util/Constants.java index 76ce20e23..aa873d368 100644 --- a/src/main/java/com/nis/util/Constants.java +++ b/src/main/java/com/nis/util/Constants.java @@ -478,14 +478,61 @@ public final class Constants { public static final String REDIRECT_RESPONSE_CODE_STARTWITH = Configurations.getStringProperty("redirect_response_code_startwith","30"); public static final String REPLACE_ZONE_KEY = Configurations.getStringProperty("replace_zone_key","zone"); public static final String REPLACE_SUBSTITUTE_KEY = Configurations.getStringProperty("replace_substitute_key","substitute"); - - public static final String SAMPLE_UPLOAD_URL_KEYWORD = Configurations.getStringProperty("sample_upload_url_keyword","av"); + /** + * 样例文件URL关键字 + */ + public static final String SAMPLE_UPLOAD_URL_KEYWORD = Configurations.getStringProperty("sample_upload_url_keyword","av"); + /** + * 摘要文件URL关键字 + */ public static final String DIGEST_UPLOAD_URL_KEYWORD = Configurations.getStringProperty("digest_upload_url_keyword","fileTransfer"); - public static final String SAMPLE_FILE_TYPE = Configurations.getStringProperty("sample_file_type",""); - public static final long SAMPLE_SINGLE_FILE_MAX_SIZE = Configurations.getLongProperty("sample_single_file_max_size",10485760l);//10M + /** + * 样例文件限制总文件大小 + */ public static final long SAMPLE_TOTAL_FILE_MAX_SIZE = Configurations.getLongProperty("sample_total_file_max_size",52428800l);//50M - public static final String DIGEST_FILE_TYPE = Configurations.getStringProperty("digest_file_type",""); + /** + * 音频文件支持文件类型 + */ + public static final String AUDIO_FILE_TYPE = Configurations.getStringProperty("audio_file_type",""); + /** + * 音频文件限制单个文件大小 + */ + public static final long AUDIO_SINGLE_FILE_MAX_SIZE = Configurations.getLongProperty("audio_single_file_max_size",10485760l);//10M + /** + * 视频文件支持文件类型 + */ + public static final String VIDEO_FILE_TYPE = Configurations.getStringProperty("video_file_type",""); + /** + * 视频文件限制单个文件大小 + */ + public static final long VIDEO_SINGLE_FILE_MAX_SIZE = Configurations.getLongProperty("video_single_file_max_size",10485760l);//10M + /** + * 图片文件支持文件类型 + */ + public static final String PICTURE_FILE_TYPE = Configurations.getStringProperty("picture_file_type",""); + /** + * 图片文件限制单个文件大小 + */ + public static final long PICTURE_SINGLE_FILE_MAX_SIZE = Configurations.getLongProperty("picture_single_file_max_size",10485760l);//10M + /** + * voip文件支持文件类型 + */ + public static final String VOIP_FILE_TYPE = Configurations.getStringProperty("voip_file_type",""); + /** + * voip文件限制单个文件大小 + */ + public static final long VOIP_SINGLE_FILE_MAX_SIZE = Configurations.getLongProperty("voip_single_file_max_size",10485760l);//10M + /** + * 摘要文件支持文件类型 + */ + public static final String DIGEST_FILE_TYPE = Configurations.getStringProperty("digest_file_type",""); + /** + * 摘要文件限制单个文件大小 + */ public static final long DIGEST_SINGLE_FILE_MAX_SIZE = Configurations.getLongProperty("digest_single_file_max_size",10485760l);//10M + /** + * 摘要文件限制总文件大小 + */ public static final long DIGEST_TOTAL_FILE_MAX_SIZE = Configurations.getLongProperty("digest_total_file_max_size",52428800l);//50M //YSP文件特征配置相关参数,用于调用外部程序生成特征文件时使用 diff --git a/src/main/resources/nis.properties b/src/main/resources/nis.properties index f7a663246..85ac083f7 100644 --- a/src/main/resources/nis.properties +++ b/src/main/resources/nis.properties @@ -365,17 +365,33 @@ replace_zone_key=zone replace_substitute_key=substitute #样例文件上传的uri关键词 sample_upload_url_keyword=/av -digest_upload_url_keyword=/fileTransfer -#样例和摘要文件大小类型设置 -sample_file_type=,mp3,mp4,flv,ivf,mp2v,jpg, -#10M 10485760 -sample_single_file_max_size=10485760 -#12M 12582912 +digest_upload_url_keyword=/filetransfer + +#sample File Size 12M 12582912 sample_total_file_max_size=12582912 + +#audio File Types +audio_file_type=,wav,ape,ram,mp3,flac,midi,wma,aif,au,aac,mmf,amr, +#audio File Size 10M 10485760(single) +audio_single_file_max_size=10485760 +#video File Types +video_file_type=,mp3,mp4,flv,ivf,mp2v, +#video File Size 10M 10485760(single) +video_single_file_max_size=10485760 +#picture File Types +picture_file_type=,bmp,gif,jpg,pic,png,tif, +#picture File Size 10M 10485760(single) +picture_single_file_max_size=10485760 +#voip File Types +voip_file_type=,mp3,mp4,flv,ivf,mp2v,jpg, +#voip File Size 10M 10485760(single) +voip_single_file_max_size=10485760 + +#digest File Types digest_file_type=,txt,doc,img,docx,pptx,xlsx,xls,ppt, -#10M10485760 +#digest File Size 10M 10485760(single) digest_single_file_max_size=10485760 -#12M12582912 +#digest File Size 12M 12582912(total) digest_total_file_max_size=12582912 #YSP文件保存路径 #av_file_path=/home/ysp/