1.11.5. 示例

package com.seeyon.apps.test.listener;

import java.io.ByteArrayInputStream;

import javax.servlet.http.HttpServletResponse;
import com.seeyon.ctp.common.exceptions.BusinessException;
import com.seeyon.ctp.common.filemanager.event.FileDownloadEvent;
import com.seeyon.ctp.common.filemanager.event.FileItem;
import com.seeyon.ctp.common.filemanager.event.FileUploadEvent;
import com.seeyon.ctp.common.po.filemanager.V3XFile;
import com.seeyon.ctp.util.annotation.ListenEvent;
// <bean class="com.seeyon.apps.test.listener.FileEventListener"/>
public class FileEventListener {
    // 附件上传监听示例:杀毒
    @ListenEvent(event = FileUploadEvent.class)
    public void onFileUpload(FileUploadEvent evt) throws Exception {
        FileItem fileItem = evt.getFileItem();
        String originalFilename = fileItem.getOriginalFilename();
        if (originalFilename.contains("有毒无法杀")) {
            // 文件有病毒,但杀毒失败,此时抛出异常,提示用户
            throw new BusinessException(originalFilename + "有病毒,无法清除");
        } else if (originalFilename.contains("有毒已杀")) {
            // 文件有病毒,杀毒成功,保存清除病毒后的文件,然后提示用户
            fileItem.setInputStream(new ByteArrayInputStream("virus clean"
                    .getBytes()));
            fileItem.appendMessage(originalFilename + "病毒已清除");
        }
    }
    // 附件下载监听示例:加密
    @ListenEvent(event = FileDownloadEvent.class)
    public void onFileDownload(FileDownloadEvent evt) throws Exception {
            V3XFile file = evt.getFile();
            if(file==null){
                return;
            }
            // 筛选要处理的文件
            if("application/vnd.ms-excel".equals(file.getMimeType())){
                HttpServletResponse response = evt.getResponse();
                response.setContentType("application/vnd.ms-excel; charset=UTF-8");
                response.setHeader("Content-disposition", "");
                // 压缩或加密文件
                evt.setInputStream(new ByteArrayInputStream("my file"
                        .getBytes()));
            }
            
    }    
}