package com.vci.client.uif.actions.client; import java.awt.Component; import java.io.File; import javax.swing.JFileChooser; import javax.swing.filechooser.FileFilter; import com.vci.client.fm.ClientFileObjectOperation; import com.vci.client.fm.FileObject; /** * 文件上传下载工具 * @author VCI-STGK006 * */ public class FileOperation { /** * 文件对象操作方法 */ private ClientFileObjectOperation operation = new ClientFileObjectOperation(); /** * 构造器 */ public FileOperation(){} /** * 选择并上传文件 * @param parent 父组件 * @param currentDirectory 默认目录 * @param filters 文件过滤器 * @param multiSelection 是否可以多选 true允许 * @param revisionLimit 版本上限? * @param boOid 业务对象ID * @return FileObject[] 业务对象集合 如果没有上传任何文件时为null * @throws Exception */ public FileObject[] selectUploadFile(Component parent, String currentDirectory,FileFilter[] filters, boolean multiSelection, int revisionLimit, String boOid) throws Exception { //创建文件选择窗口 JFileChooser jfc = null; if(currentDirectory == null || currentDirectory.equals("")){ jfc = new JFileChooser(); } else { jfc = new JFileChooser(currentDirectory); } jfc.setDialogTitle("请选择文件"); jfc.setFileSelectionMode(JFileChooser.FILES_ONLY); jfc.setMultiSelectionEnabled(multiSelection); //设置文件过滤器 if(filters != null){ for(FileFilter filter : filters){ jfc.addChoosableFileFilter(filter); } } //FileFilter DefaultFilter = new FileNameExtensionFilter("所有文件", "*"); //jfc.addChoosableFileFilter(DefaultFilter); int result = jfc.showOpenDialog(parent); if(result == JFileChooser.APPROVE_OPTION){ //获得选择文件 File[] files = null; if(multiSelection){ files = jfc.getSelectedFiles(); } else { files = new File[1]; files[0] = jfc.getSelectedFile();; } return uploadFile(files, revisionLimit, boOid); } return null; } /** * 上传文件 * @param filePath 文件路径 * @param revisionLimit 版本上限? * @param boOid 业务对象ID * @return 文件对象 * @throws Exception 异常类型 Exception VCIError */ public FileObject uploadFile(String filePath, int revisionLimit, String boOid) throws Exception{ if(filePath == null || filePath.trim().equals("")){ throw new Exception("参数错误:文件路径为空!"); } String[] filePaths = {filePath}; FileObject[] fileObjects = uploadFile(filePaths, revisionLimit, boOid); if(fileObjects != null && fileObjects.length == 1){ return fileObjects[0]; } return null; } /** * 上传文件 * @param file 文件 * @param revisionLimit 版本上限? * @param boOid 业务对象ID * @return 文件对象 * @throws Exception 异常类型 Exception VCIError */ public FileObject uploadFile(File file, int revisionLimit, String boOid) throws Exception{ if(file == null){ throw new Exception("参数错误:文件对象为空!"); } File[] files = new File[1]; files[0] = file; FileObject[] fileObjects = uploadFile(files, revisionLimit, boOid); if(fileObjects != null && fileObjects.length == 1){ return fileObjects[0]; } return null; } /** * 上传文件 * @param filePaths 文件路径集合 * @param revisionLimit 版本上限? * @param boOid 业务对象ID * @return 文件对象 * @throws Exception 异常类型 Exception VCIError */ public FileObject[] uploadFile(String[] filePaths, int revisionLimit, String boOid) throws Exception{ FileObject[] fileObjects = null; if(filePaths == null || filePaths.length<1){ throw new Exception("参数错误:文件路径为空!"); } fileObjects = new FileObject[filePaths.length]; for(int i = 0; i 0){ for(int i = 0; i < fos.length; i++){ String[] cmdArray = {"cmd.exe","/c",tempPath + File.separator + fos[i].getBusinessObject().name}; Runtime.getRuntime().exec(cmdArray); } return true; } return false; } /** * 下载文件到本地 * @param foOids 文件对象OID * @param savePath 文件保存路径 * @return FileObject[]下载的文件对象 * @throws Exception 异常类型 Exception VCIError */ public FileObject[] downloadFile(String[] foOids, String savePath) throws Exception{ if(foOids != null && foOids.length >0){ FileObject[] fileObjects = new FileObject[foOids.length]; for(int i = 0; i