/* ==================================================================
* Created [2009-4-27 下午11:32:55] by Jon.King
* ==================================================================
* TSS
* ==================================================================
* mailTo:jinpujun@hotmail.com
* Copyright (c) Jon.King, 2009-2012
* ==================================================================
*/
package com.jinhe.tss.component.support.web.upload;
import java.io.File;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import com.jinhe.tss.core.exception.BusinessException;
/**
* <p> FileDownloadManager.java </p>
* <p>
* 文件上传管理对象
* </p>
*/
public class FileUploadManager {
/**
* 上传文件检查器:可以过滤哪些文件能上传,哪些文件不能上传,
* 实现接口com.jinhe.tss.component.support.web.upload.IFileUploadValidator。
* 通常情况下可以使用后缀校验对象:com.jinhe.tss.component.support.web.upload.SuffixFileValidator
* 不指定则不校验。
*/
@Autowired private IFileUploadValidator validator; //文件检查对象
/**
* 文件上传后处理对象:一般为复制、移动、保存文件等,
* 实现接口com.jinhe.tss.component.support.web.upload.IFileUploadProcessor。
* 通常情况下可以使用文件复制处理对象:com.jinhe.tss.component.support.web.upload.FileCopyProcessor
* 不指定则不做任何事情。
*/
@Autowired private IFileUploadProcessor processor;
/**
* 文件上传处理完成后扩展对象:一般为处理文件上传完成后对文件或相关数据的处理,组织返回信息
* 实现接口com.jinhe.tss.component.support.web.upload.IFileUploadExtender
* 不指定则默认返回“文件上传成功”
*/
@Autowired private IFileUploadExtender extender;
/**
* <p>
* 文件上传处理过程
* </p>
* @param file 需要上传的文件
* @param params 上传文件相关参数
* @return Object 返回前台的数据对象,必须覆盖toString方法为输出前台代码
*/
public Object upload(File file, Map<String, String> params) {
//文件合法性检测
if (validator != null && !validator.validate(file, params)) {
throw new BusinessException(validator.getErrorMessage());
}
//文件处理
if(processor != null) {
file = processor.execute(file, params);
}
//文件后续操作
if(extender != null) {
return extender.excute(file, params);
}
return null;
}
}