文件上传摘要和样例文件处理
This commit is contained in:
@@ -39,37 +39,44 @@ public class MultipartFileIntercepter extends CommonsMultipartResolver{
|
|||||||
String encoding = determineEncoding(request);
|
String encoding = determineEncoding(request);
|
||||||
//是否是样例文件
|
//是否是样例文件
|
||||||
boolean isSampleFileUpload = request.getRequestURI().contains(Constants.SAMPLE_UPLOAD_URL_KEYWORD);
|
boolean isSampleFileUpload = request.getRequestURI().contains(Constants.SAMPLE_UPLOAD_URL_KEYWORD);
|
||||||
FileUpload fileUpload = this.prepareFileUpload(encoding,isSampleFileUpload);
|
boolean isDigestFileUpload = request.getRequestURI().contains(Constants.DIGEST_UPLOAD_URL_KEYWORD);
|
||||||
|
FileUpload fileUpload = this.prepareFileUpload(encoding,isSampleFileUpload,isDigestFileUpload);
|
||||||
long fileUploadTotalSize=0l;
|
long fileUploadTotalSize=0l;
|
||||||
Properties languageProp=getMsgProp();
|
Properties languageProp=getMsgProp();
|
||||||
|
MultipartParsingResult multipartParsingResult=null;
|
||||||
try {
|
try {
|
||||||
/*****************预先获取上传文件的总的大小************/
|
if(isSampleFileUpload || isDigestFileUpload){
|
||||||
FileUpload fileUploadTotal = fileUpload;
|
/*****************预先获取上传文件的总的大小************/
|
||||||
|
FileUpload fileUploadTotal = fileUpload;
|
||||||
ServletRequestContext ctx = new ServletRequestContext(request);
|
|
||||||
InputStream input=ctx.getInputStream();
|
ServletRequestContext ctx = new ServletRequestContext(request);
|
||||||
@SuppressWarnings("deprecation") // still has to be backward compatible
|
InputStream input=ctx.getInputStream();
|
||||||
int contentLengthInt = ctx.getContentLength();
|
@SuppressWarnings("deprecation") // still has to be backward compatible
|
||||||
|
int contentLengthInt = ctx.getContentLength();
|
||||||
fileUploadTotalSize = UploadContext.class.isAssignableFrom(input.getClass())
|
|
||||||
// Inline conditional is OK here CHECKSTYLE:OFF
|
fileUploadTotalSize = UploadContext.class.isAssignableFrom(input.getClass())
|
||||||
? ((UploadContext) ctx).contentLength()
|
// Inline conditional is OK here CHECKSTYLE:OFF
|
||||||
: contentLengthInt;
|
? ((UploadContext) ctx).contentLength()
|
||||||
// CHECKSTYLE:ON
|
: contentLengthInt;
|
||||||
logger.error("上传文件总大小为"+fileUploadTotalSize);
|
// CHECKSTYLE:ON
|
||||||
/*****************预先获取上传文件的总的大小************/
|
logger.error("上传文件总大小为"+fileUploadTotalSize);
|
||||||
//验证文件总大小
|
/*****************预先获取上传文件的总的大小************/
|
||||||
if(fileUploadTotalSize > fileUpload.getSizeMax()){
|
//验证文件总大小
|
||||||
throw new MultiPartNewException("", fileUploadTotalSize, fileUpload.getSizeMax(),languageProp, null);
|
if(fileUploadTotalSize > fileUpload.getSizeMax() ){
|
||||||
}
|
throw new MultiPartNewException("", fileUploadTotalSize, fileUpload.getSizeMax(),languageProp, null);
|
||||||
//设置文件上传SizeMax为总文件的大小,否则无法通过SizeLimit(总的文件大小)校验,就无法进行下面单个文件大小的校验
|
}
|
||||||
fileUploadTotal.setSizeMax(fileUploadTotalSize);
|
//设置文件上传SizeMax为总文件的大小,否则无法通过SizeLimit(总的文件大小)校验,就无法进行下面单个文件大小的校验
|
||||||
|
fileUploadTotal.setSizeMax(fileUploadTotalSize);
|
||||||
List fileItems = ((ServletFileUpload) fileUploadTotal).parseRequest(request);
|
|
||||||
MultipartParsingResult multipartParsingResult=parseFileItems(fileItems, encoding);
|
List fileItems = ((ServletFileUpload) fileUploadTotal).parseRequest(request);
|
||||||
MultiValueMap<String, MultipartFile> files=multipartParsingResult.getMultipartFiles();
|
multipartParsingResult=parseFileItems(fileItems, encoding);
|
||||||
//单个文件验证文件格式和文件大小
|
MultiValueMap<String, MultipartFile> files=multipartParsingResult.getMultipartFiles();
|
||||||
validFileList(files,fileUpload,languageProp,isSampleFileUpload);
|
//单个文件验证文件格式和文件大小
|
||||||
|
validFileList(files,fileUpload,languageProp,isSampleFileUpload);
|
||||||
|
}else{
|
||||||
|
List fileItems = ((ServletFileUpload) fileUpload).parseRequest(request);
|
||||||
|
multipartParsingResult=this.parseFileItems(fileItems, encoding);
|
||||||
|
}
|
||||||
|
|
||||||
return multipartParsingResult;
|
return multipartParsingResult;
|
||||||
|
|
||||||
@@ -120,7 +127,7 @@ public class MultipartFileIntercepter extends CommonsMultipartResolver{
|
|||||||
* @param isSampleFileUpload
|
* @param isSampleFileUpload
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
protected FileUpload prepareFileUpload(String encoding,boolean isSampleFileUpload) {
|
protected FileUpload prepareFileUpload(String encoding,boolean isSampleFileUpload,boolean isDigestFileUpload) {
|
||||||
FileUpload fileUpload = getFileUpload();
|
FileUpload fileUpload = getFileUpload();
|
||||||
FileUpload actualFileUpload = fileUpload;
|
FileUpload actualFileUpload = fileUpload;
|
||||||
if (encoding != null && !encoding.equals(fileUpload.getHeaderEncoding())) {
|
if (encoding != null && !encoding.equals(fileUpload.getHeaderEncoding())) {
|
||||||
@@ -128,8 +135,10 @@ public class MultipartFileIntercepter extends CommonsMultipartResolver{
|
|||||||
actualFileUpload.setHeaderEncoding(encoding);
|
actualFileUpload.setHeaderEncoding(encoding);
|
||||||
if(isSampleFileUpload){
|
if(isSampleFileUpload){
|
||||||
actualFileUpload.setSizeMax(Constants.SAMPLE_TOTAL_FILE_MAX_SIZE);
|
actualFileUpload.setSizeMax(Constants.SAMPLE_TOTAL_FILE_MAX_SIZE);
|
||||||
}else{
|
}else if(isDigestFileUpload){
|
||||||
actualFileUpload.setSizeMax(Constants.DIGEST_TOTAL_FILE_MAX_SIZE);
|
actualFileUpload.setSizeMax(Constants.DIGEST_TOTAL_FILE_MAX_SIZE);
|
||||||
|
}else{
|
||||||
|
actualFileUpload.setSizeMax(fileUpload.getSizeMax());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return actualFileUpload;
|
return actualFileUpload;
|
||||||
|
|||||||
@@ -410,6 +410,7 @@ public final class Constants {
|
|||||||
public static final String REDIRECT_RESPONSE_CODE_STARTWITH = Configurations.getStringProperty("redirect_response_code_startwith","30");
|
public static final String REDIRECT_RESPONSE_CODE_STARTWITH = Configurations.getStringProperty("redirect_response_code_startwith","30");
|
||||||
|
|
||||||
public static final String SAMPLE_UPLOAD_URL_KEYWORD = Configurations.getStringProperty("sample_upload_url_keyword","av");
|
public static final String SAMPLE_UPLOAD_URL_KEYWORD = Configurations.getStringProperty("sample_upload_url_keyword","av");
|
||||||
|
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 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_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 long SAMPLE_TOTAL_FILE_MAX_SIZE = Configurations.getLongProperty("sample_total_file_max_size",52428800l);//50M
|
||||||
|
|||||||
@@ -316,6 +316,7 @@ redirect_content_key=content
|
|||||||
redirect_response_code_startwith=30
|
redirect_response_code_startwith=30
|
||||||
#样例文件上传的uri关键词
|
#样例文件上传的uri关键词
|
||||||
sample_upload_url_keyword=/av
|
sample_upload_url_keyword=/av
|
||||||
|
digest_upload_url_keyword=/fileTransfer
|
||||||
#样例和摘要文件大小类型设置
|
#样例和摘要文件大小类型设置
|
||||||
sample_file_type=,mp4,flv,ivf,mp2v,
|
sample_file_type=,mp4,flv,ivf,mp2v,
|
||||||
#10M 10485760
|
#10M 10485760
|
||||||
|
|||||||
@@ -247,6 +247,7 @@
|
|||||||
<bean id="multipartResolver"
|
<bean id="multipartResolver"
|
||||||
class="com.nis.interceptor.MultipartFileIntercepter" >
|
class="com.nis.interceptor.MultipartFileIntercepter" >
|
||||||
<property name="defaultEncoding" value="utf-8"></property>
|
<property name="defaultEncoding" value="utf-8"></property>
|
||||||
|
<property name="maxUploadSize" value="5242880"></property><!-- 5*1024*1024 -->
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<bean
|
<bean
|
||||||
|
|||||||
Reference in New Issue
Block a user