ext下载文件

package com.bgd.debt.zqgl.attachload.action;

import com.bgd.debt.common.util.DebtUtils;
import com.bgd.debt.zqgl.attachload.service.AttachLoadService;
import com.bgd.platform.util.action.ExportAction;
import com.bgd.platform.util.common.DsyEscapeTool;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.apache.struts2.ServletActionContext;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipOutputStream;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

//todo -------------------------重构--------------------------

public class AttachLoadAction extends ExportAction {

private static final long serialVersionUID = 1L;

private AttachLoadService attachLoadService;

private File upload; // 上传的文件
private String uploadFileName; // 文件名称
private String uploadContentType; // 文件类型



public File getUpload() {
	return upload;
}

public void setUpload(File upload) {
	this.upload = upload;
}

public String getUploadFileName() {
	return uploadFileName;
}

public void setUploadFileName(String uploadFileName) {
	this.uploadFileName = uploadFileName;
}

public String getUploadContentType() {
	return uploadContentType;
}

public void setUploadContentType(String uploadContentType) {
	this.uploadContentType = uploadContentType;
}

public AttachLoadService getAttachLoadService() {
	return attachLoadService;
}

public void setAttachLoadService(AttachLoadService attachLoadService) {
	this.attachLoadService = attachLoadService;
}

/**
 * 根据批次获取该批次下的申报数据列表
 */
public void getBillsByPc() {
	HttpServletRequest req = ServletActionContext.getRequest();
	HttpServletResponse response = ServletActionContext.getResponse();
	response.setHeader("ContentType", "text/html");
	response.setCharacterEncoding("utf-8");
	// 分页
	int start = Integer.parseInt(DebtUtils.escapeParamValue(req, "start", 0, "number"));
	int limit = Integer.parseInt(DebtUtils.escapeParamValue(req, "limit", 0, "number"));
	// 接收req传递过来的参数
	Map<String, Object> param = DebtUtils.getEscapeParameterMap(req);
	JSONObject result = new JSONObject();
	try {
		// 查询得到结果
		JSONObject res = attachLoadService.getBillsByPc(start, limit, param);
		result.put("list", JSONArray.fromObject((List) res.get("list")));
		result.put("totalcount", (Integer) res.get("count"));
		if (JSONArray.fromObject((List) res.get("list")) != null) {
			result.put("success", true);
		} else {
			result.put("success", false);
			result.put("message", "查询结果为空");
		}
	} catch (Exception e) {
		result.put("message", "获取数据异常!"+DebtUtils.getExceptionMessage(e));
		result.put("success", false);
		e.printStackTrace();
	} finally {
		try {
			PrintWriter out = response.getWriter();
			out.write(result.toString());
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
/**
 * 构建项目上传的附件结构
 */
public void getXmfj() {
	HttpServletRequest request = ServletActionContext.getRequest();
	HttpServletResponse response = ServletActionContext.getResponse();
	response.setContentType("text/html");
	response.setCharacterEncoding("utf-8");
	// 接收req传递过来的参数
	Map<String, Object> param = DebtUtils.getEscapeParameterMap(request);
	String[] ids = DebtUtils.escapeParamValues(request,"ids",-1,"string");
	param.put("ids", ids);
	JSONObject result = new JSONObject();
	String realPath  = ServletActionContext.getServletContext().getRealPath("/").replace("/", "//");
	try {
		Map r = attachLoadService.getXmfj(param,realPath);
		if(r==null) {
			result.put("success", false);
			result.put("message", "代码返回Null指针,数据异常!");
		}else {
			result.put("success", true);
			//获取压缩后的文件
			File file = (File) r.get("file");
			result.put("file_name", file.getName());
			//计算文件大小
			DecimalFormat df = new DecimalFormat("#.00");
			long bytes = calcFileSize(file);
			String mb = df.format(bytes/(1014.0*1024.0));
			//文件大于200M,提示自动下载还是上服务器拷贝,不删除压缩包
			if(bytes>(200*1024*1024)) {
				result.put("message", file.getName()+",未压缩文件大小:"+mb+"MB,超过200MB,可能下载较慢,路径:"+file.getAbsolutePath()+",是否连接服务器进行拷贝?");
			}else {
				result.put("message", "是否自动下载?否将拷贝到服务器");
			}
		}
	} catch (Exception e) {
		result.put("success", false);
		result.put("message", DebtUtils.getExceptionMessage(e));
	}finally {
		PrintWriter out;
		try {
			out = response.getWriter();
			out.write(result.toString());
			out.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
/**
 * 计算文件夹大小
 * @param file
 * @return
 */
private long calcFileSize(File file) {
	long size = 0;
	List<File> files = new ArrayList<File>();
	getFiles(file,files);
	for (File f : files) {
		size+=f.length();
	}
	return size;
}
/**
 * 获取文件数组
 * @param file
 */
private void getFiles(File file,List<File> fileList) {
	if (file.exists()) {
		if (file.isFile()) {
			fileList.add(file);
		} else {
			File[] files = file.listFiles();
			for (File f : files) {
				getFiles(f,fileList);
			}
		}
	}
}
/**
 * 下载文件并删除服务器上文件
 */
public void downloadXmFileZip() {
	HttpServletRequest request = ServletActionContext.getRequest();
	HttpServletResponse response = ServletActionContext.getResponse();
	response.setContentType("text/html");
	response.setCharacterEncoding("utf-8");
	// 接收req传递过来的参数
	Map<String, Object> param = DebtUtils.getEscapeParameterMap(request);
	String realPath = ServletActionContext.getServletContext().getRealPath("/").replace("/", "//");
	//下载方式 1:浏览器下载 2:服务器拷贝
	String xzfs = (String) param.get("xzfs");
	ZipOutputStream os = null;
	JSONObject result = new JSONObject();
	File file = null;
	try {
		String file_name = java.net.URLDecoder.decode((String)param.get("file_name"), "utf-8");
		String filePath = realPath+file_name;
		//未压缩的文件
		file = new File(filePath);
		if(file.exists()) {
			//压缩以及下载文件
			if(xzfs!=null&&"1".equals(xzfs)) {//浏览器下载
				//将文件下载到本地
				response.reset();
				response.setContentType("APPLICATION/OCTET-STREAM");
				//文件名
				String filename = file.getName()+".zip";
				response.addHeader("Content-Disposition", DsyEscapeTool.escapeContentDisposition(filename, 200, "string"));
				os = new ZipOutputStream(response.getOutputStream());
			}else {
				//将文件压缩上传到服务器
				File zipFile = new File(filePath+".zip");
				if(!zipFile.exists()) {
					zipFile.createNewFile();
				}
				os = new ZipOutputStream(new FileOutputStream(zipFile));
			}
			//设置输出流编码,window默认为gbk
			os.setEncoding("gbk");
			long startTime = System.currentTimeMillis();
			//计算文件压缩时间
			zip(file.listFiles(),file.getName(),os);
			long endTime = System.currentTimeMillis();
			result.put("success", true);
			result.put("message", "文件压缩成功,耗时:"+(endTime-startTime)+"毫秒!请拷贝后删除!");
		}
	}catch(Exception e) {
		result.put("success", false);
		result.put("message", "文件压缩上传失败!"+DebtUtils.getExceptionMessage(e));
	}finally {
		try {
			if(os!=null) {
				os.close();
			}
		} catch (IOException e) {
			e.printStackTrace();
		}finally {
			if(delFile(file)) {
				System.out.println("文件“"+file.getName()+"”删除成功!");
			}else {
				System.out.println("文件“"+file.getName()+"”删除失败!");
			}
		}
		//若是上传到服务器,则执行下载代码
		if(!(xzfs!=null&&"1".equals(xzfs))) {
			try {
				PrintWriter out = response.getWriter();
				out.write(result.toString());
				out.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}

/**
 * 压缩文件的方法
 * @param files 文件对象数组
 * @param baseFolder 文件夹基目录
 * @param zos zip文件输出流
 * @throws Exception
 */
private static void zip(File[] files, String baseFolder, ZipOutputStream zos)  throws Exception {
	// 输入
	FileInputStream fis = null;
	// 条目
	ZipEntry entry = null;
	// 数目
	int count = 0;
	for (File file : files) {
		if (file.isDirectory()) {
			// 递归
			zip(file.listFiles(),  baseFolder + File.separator + file.getName(), zos);
			continue;
		}
		entry = new ZipEntry(baseFolder + File.separator + file.getName());
		// 加入
		zos.putNextEntry(entry);
		fis = new FileInputStream(file);
		// 读取
		byte[] buffer = new byte[1024];
		while ((count = fis.read(buffer, 0, buffer.length)) != -1) {
			// 写入
			zos.write(buffer, 0, count);
			zos.flush();
		}
		zos.closeEntry(); // 释放资源
		fis.close();
	}
}
/**
 * 递归删除文件及文件夹
 * @param file
 */
private boolean delFile(File file) {
	if (!file.exists()) {
		return false;
	}
	if (file.isFile()) {
		return file.delete();
	} else {
		File[] files = file.listFiles();
		for (File f : files) {
			delFile(f);
		}
		return file.delete();
	}
}

}
package com.bgd.debt.zqgl.attachload.service;

import com.bgd.debt.common.service.DebtCommonService;
import com.bgd.debt.common.util.DebtException;
import com.bgd.debt.common.util.DebtUtils;
import com.bgd.platform.upload.action.DownloadFileAction;
import com.bgd.platform.util.dao.BgdDataSource;
import com.bgd.platform.workflow.task.service.DoWorkFlowService;
import dm.jdbc.util.StringUtil;
import net.sf.json.JSONObject;

import java.io.;
import java.text.SimpleDateFormat;
import java.util.
;

//import com.bgd.debt.common.util.VeriCodeUtil;

public class AttachLoadService {
private BgdDataSource bgdDataSource;
private DoWorkFlowService doWorkFlowService;
private DebtCommonService commonService;
private DownloadFileAction downFileAction;
// private GkClientServiceImpl gkClientServiceImpl;

// public GkClientServiceImpl getGkClientServiceImpl() {
// return gkClientServiceImpl;
// }
//
// public void setGkClientServiceImpl(GkClientServiceImpl gkClientServiceImpl) {
// this.gkClientServiceImpl = gkClientServiceImpl;
// }

public DebtCommonService getCommonService() {
    return commonService;
}

public void setCommonService(DebtCommonService commonService) {
    this.commonService = commonService;
}

public DoWorkFlowService getDoWorkFlowService() {
    return doWorkFlowService;
}

public void setDoWorkFlowService(DoWorkFlowService doWorkFlowService) {
    this.doWorkFlowService = doWorkFlowService;
}

public BgdDataSource getBgdDataSource() {
    return bgdDataSource;
}

public void setBgdDataSource(BgdDataSource bgdDataSource) {
    this.bgdDataSource = bgdDataSource;
}

public DownloadFileAction getDownFileAction() {
    return downFileAction;
}

public void setDownFileAction(DownloadFileAction downFileAction) {
    this.downFileAction = downFileAction;
}

/* public BgdDataSource getbgdDataSource() {
    return bgdDataSource;
}

public void setbgdDataSource(BgdDataSource bgdDataSource) {
    this.bgdDataSource = bgdDataSource;
}

/
/
*
* 根据批次获取该批次下的申报数据列表 分页显示
*
* @param start 起始页
* @param limit 截止页
* @param param 参数
* @return
*/
public JSONObject getBillsByPc(int start, int limit, Map<String, Object> param) {
String downloadflag = (String) param.get(“downloadflag”);
String mhcx = (String) param.get(“mhcx”);
String AD_CODE_CHOSE = (String) param.get(“AD_CODE_CHOSE”);
StringBuffer sb = new StringBuffer();
StringBuffer mainSql = new StringBuffer();
List paramList = new ArrayList();
if (“0”.equals(downloadflag)) {
mainSql.append(" SELECT ZQXX.ZQ_ID," +
" ZQXX.ZQ_NAME," +
" AD.CODE AS AD_CODE," +
" AD.NAME AS AD_NAME," +
" AG.NAME AS AG_NAME," +
" INFO.XM_NAME," +
" INFO.XM_ID," +
" INFO.XM_CODE," +
" XMLX.NAME AS XMLX_NAME" +
" FROM (SELECT RELATION.XM_ID" +
" FROM DEBT_V_ZQXM_ZCXX_RELATION RELATION" +
" LEFT JOIN DEBT_T_ZQGL_ZCXX ZCXX" +
" ON RELATION.ZQ_ID = ZCXX.ZQ_ID" +
" AND RELATION.XM_ID = ZCXX.XM_ID" +
" WHERE 1 = 1" +
" AND RELATION.ZC_TYPE = ‘0’" +
" GROUP BY RELATION.XM_ID) CXQXM" +
" LEFT JOIN DEBT_T_ZQGL_ZQXM ZQXM" +
" ON CXQXM.XM_ID = ZQXM.XM_ID" +
" LEFT JOIN DEBT_T_ZQGL_ZQXX ZQXX" +
" ON ZQXM.ZQ_ID = ZQXX.ZQ_ID" +
" LEFT JOIN DEBT_T_PROJECT_INFO INFO" +
" ON CXQXM.XM_ID = INFO.XM_ID" +
" LEFT JOIN DSY_V_ELE_ZWXMLX XMLX" +
" ON INFO.XMLX_ID = XMLX.GUID" +
" LEFT JOIN DSY_V_ELE_AD AD" +
" ON INFO.AD_CODE = AD.CODE" +
" LEFT JOIN DSY_V_ELE_AG AG" +
" ON INFO.AG_ID = AG.GUID");
}else if (“1”.equals(downloadflag)) {
mainSql.append(" SELECT ZQZC.ZC_NO," +
" ZQZC.AD_CODE," +
" ZQZC.AD_NAME," +
" ZQZC.AG_NAME," +
" ZQZC.ZCD_ID," +
" ZQXX.ZQ_ID," +
" ZQXX.ZQ_NAME," +
" ZQZC.PAY_DATE," +
" ZQZC.PAY_AMT," +
" ZQZC.ZCD_REMARK" +
" FROM DEBT_V_ZQGL_ZCXX ZQZC" +
" LEFT JOIN DEBT_T_ZQGL_ZQXX ZQXX" +
" ON ZQZC.ZQ_ID = ZQXX.ZQ_ID" );
}else {
mainSql.append(" SELECT SJZC.SJZC_NO," +
" SJZC.AG_NAME," +
" SJZC.AD_CODE," +
" SJZC.SJZC_ID," +
" ZQ.ZQ_ID," +
" ZQ.ZQ_NAME," +
" INFO.XM_ID," +
" INFO.XM_NAME," +
" SJZC.FOUND_TYPE_CODE AS LY_TYPE," +
" SJZC.SJZC_DATE," +
" SJZC.SJZC_AMT," +
" SJZC.VOUCHER_ABS," +
" SJZC.REMARK" +
" FROM DEBT_T_ZQGL_ZCXX_SJZC SJZC" +
" LEFT JOIN DEBT_T_PROJECT_INFO INFO" +
" ON SJZC.XM_ID = INFO.XM_ID" +
" LEFT JOIN DEBT_T_ZQGL_ZQXX ZQ" +
" ON SJZC.ZQ_ID = ZQ.ZQ_ID");
}
sb.append(" WHERE 1=1");
if (!(mhcx == null || “”.equals(mhcx))) {
sb.append(" AND INFO.XM_NAME LIKE ?“);
paramList.add(”%" + mhcx + “%”);
}
if (!(AD_CODE_CHOSE == null || “”.equals(AD_CODE_CHOSE))) {
sb.append(" AND INFO.AD_CODE LIKE ?||‘%’ ");
paramList.add(AD_CODE_CHOSE);
}
mainSql.append(sb);
Integer countSum = bgdDataSource.getCountBySql(mainSql.toString(), paramList.toArray());
List list = bgdDataSource.findBySqlLimit(mainSql.toString(), paramList, start, limit);
JSONObject rs = new JSONObject();
if (list.size() > 0) {
rs.put(“map”, list.get(0));
}
rs.put(“list”, list);
rs.put(“count”, countSum);
return rs;
}

/**
 * 下载项目附件
 *
 * @param param    要下载附件的项目数组
 *                 该功能所要下载的附件是上传到项目上的,所以BUSI_ID = XM_ID
 * @param realPath 服务器路径
 * @return
 * @throws Exception
 */
public Map getXmfj(Map<String, Object> param, String realPath) throws Exception {
    Map<String, Object> result = new HashMap<String, Object>();
    String downloadflag = (String) param.get("downloadflag");
    Date date = new Date();
    SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
    String baseForderName = "";
    if ("0".equals(downloadflag)) {
        baseForderName = "项目附件下载" + format.format(date);
    }else if ("1".equals(downloadflag)) {
        baseForderName = "支出附件下载" + format.format(date);
    } else {
        baseForderName = "实物工作量附件下载" + format.format(date);
    }
    StringBuilder sql = new StringBuilder();
    //循环遍历对项目操作
    if ("0".equals(downloadflag)) {
        sql.append(" SELECT AD.CODE AS AD_CODE," +
                "       AD.NAME AS AD_NAME," +
                "       XM.XM_ID," +
                "       XM.XM_NAME," +
                "       INFO.FILE_NAME," +
                "       INFO.FILE_ID," +
                "       INFO.FILE_PATH," +
                "       INFO.STORE_MODE" +
                "  FROM DSY_V_ELE_AD AD" +
                "  LEFT JOIN DEBT_T_PROJECT_INFO XM " +
                "    ON  XM.AD_CODE = AD.CODE" +
                "  LEFT JOIN DEBT_T_FILE_INFO INFO" +
                "    ON XM.XM_ID = INFO.BUSI_ID" +
                " WHERE INFO.BUSI_ID IS NOT NULL" +
                "   AND XM.XM_ID = ?");
    } else if ("1".equals(downloadflag)) {
        sql.append(" SELECT AD.CODE AS AD_CODE," +
                "       AD.NAME AS AD_NAME," +
                "       XM.XM_ID," +
                "       XM.XM_NAME," +
                "       INFO.FILE_NAME," +
                "       INFO.FILE_ID," +
                "       INFO.FILE_PATH," +
                "       INFO.STORE_MODE" +
                "  FROM DSY_V_ELE_AD AD" +
                "  LEFT JOIN DEBT_T_ZQGL_ZCXX ZCXX " +
                "    ON  ZCXX.AD_CODE = AD.CODE" +
                "  LEFT JOIN DEBT_T_PROJECT_INFO XM" +
                "    ON ZCXX.XM_ID = XM.XM_ID" +
                "  LEFT JOIN DEBT_T_FILE_INFO INFO" +
                "    ON ZCXX.ZCD_ID = INFO.BUSI_ID" +
                " WHERE INFO.BUSI_ID IS NOT NULL" +
                "   AND ZCXX.ZCD_ID = ?");
    } else {
        sql.append("SELECT AD.CODE AS AD_CODE," +
                "       AD.NAME AS AD_NAME," +
                "       XM.XM_ID," +
                "       XM.XM_NAME," +
                "       INFO.FILE_NAME," +
                "       INFO.FILE_ID," +
                "       INFO.FILE_PATH," +
                "       INFO.STORE_MODE" +
                "  FROM DSY_V_ELE_AD AD" +
                "  LEFT JOIN DEBT_T_ZQGL_ZCXX_SJZC SJZC " +
                "    ON  SJZC.AD_CODE = AD.CODE" +
                "  LEFT JOIN DEBT_T_PROJECT_INFO XM" +
                "    ON SJZC.XM_ID = XM.XM_ID" +
                "  LEFT JOIN DEBT_T_FILE_INFO INFO" +
                "    ON SJZC.SJZC_ID = INFO.BUSI_ID" +
                " WHERE INFO.BUSI_ID IS NOT NULL" +
                "   AND SJZC.SJZC_ID = ?");
    }
    String[] ids = (String[]) param.get("ids");
    download(sql.toString(), ids, baseForderName, realPath, downloadflag);
    //上传到服务器上的文件夹
    File file1 = new File(realPath + baseForderName);
    //若查询出来的信息为空
    if (!file1.exists()) {
        throw new DebtException("项目所关联文件不存在!");
    }
    //若正常执行
    result.put("file", file1);
    return result;
}

public void download(String sql, String[] ids, String baseForderName, String realPath, String downloadflag) throws Exception {
    if (ids != null && ids.length <= 0) {
        throw new DebtException("不存在可以下载附件的项目!");
    }
    //用HashSet去除重复的项目
    Set<String> idsSet = new HashSet<String>();
    for (String id : ids) {
        if (StringUtil.isNotEmpty(id)) {
            idsSet.add(id);
        }
    }
    for (String id : idsSet) {
        List<Map> filesList = bgdDataSource.findBySql(sql, new Object[]{id});
        //若项目上传的附件为空,则跳过
        if (filesList != null && filesList.size() <= 0) {
            continue;
        }
        //遍历获取该项目所上传的附件
        String absolutePath = null;//文件所属文件夹在服务器下的绝对路径
        String relativePath = null;//文件所属文件夹在服务器下的相对路径
        File fileDirectory = null;//文件所属文件夹
        File fileB = null;//具体文件
        Date date = new Date();
        SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
        String createdate = format.format(date);
        for (int i = 0; i < filesList.size(); i++) {
            Map map = filesList.get(i);
            OutputStream os = null;
            try {
                //构造文件所在文件夹及路径
                if ("0".equals(downloadflag)) {
                    relativePath = baseForderName + File.separator + map.get("AD_CODE") + " " + map.get("AD_NAME")
                            + File.separator + map.get("XM_ID") + " " + map.get("XM_NAME");
                }else {
                    relativePath = baseForderName + File.separator + map.get("AD_CODE") + " " + map.get("AD_NAME")
                            + File.separator + map.get("XM_ID") + " " + map.get("XM_NAME") + File.separator + createdate;
                }
                absolutePath = realPath + relativePath;
                fileDirectory = new File(absolutePath);
                fileB = null;
                //创建文件夹路径
                if (!fileDirectory.exists()) {
                    fileDirectory.mkdirs();
                }
                //创建文件
                fileB = new File(fileDirectory, (String) map.get("FILE_NAME"));
                if (!fileB.exists()) {
                    fileB.createNewFile();
                } else {
                    fileB.renameTo(new File(fileB.getParent(), "【重复文件" + i + "】-" + fileB.getName()));
                }
                //上传文件
                os = new BufferedOutputStream(new FileOutputStream(fileB));
                boolean falg = downFileAction.getFileOutputStream((String) map.get("FILE_ID"), os);
                //若文件不存在或者其他原因导致没有下载成功,则提示文件无效
                if (!falg) {
                    //rename
                    fileB.renameTo(new File(fileB.getParent(), "【无效文件】-" + fileB.getName()));
                }
            } catch (Exception e) {
                //将异常继续抛出,将异常信息打印,不影响后续文件
                System.out.println("【" + relativePath + fileB.separator + fileB.getName() + "】 " + DebtUtils.getExceptionMessage(e));
                //throw new DebtException("【"+relativePath+fileB.separator+fileB.getName()+"】 "+e.getMessage()+"");
            } finally {
                try {
                    //关闭流
                    if (os != null) {
                        os.close();
                    }
                } catch (IOException e) {
                    throw e;
                }
            }
        }
    }
}

}
public boolean getFileOutputStream(String fileId, OutputStream out) {
FileInputStream in = null;

    boolean var5;
    try {
        String realPath = ServletActionContext.getServletContext().getRealPath("/");
        Map fileInfo = this.uploadService.getFileInfo(fileId);
        String fileSavePath = (String)fileInfo.get("file_path");
        String fileName = (String)fileInfo.get("file_name");
        String fileMode = (String)fileInfo.get("store_mode");
        if ("2".equals(fileMode)) {
            byte[] file_data = this.uploadService.downloadFile(fileId);
            out.write(file_data);
        } else if ("3".equals(fileMode)) {
            MongoDBUtil mongoDB = new MongoDBUtil();
            mongoDB.findFileByMongoDB(fileId, out);
        } else {
            String path = fileSavePath;
            if (fileSavePath.contains("/")) {
                path = fileSavePath.substring(0, fileSavePath.lastIndexOf("/"));
            }

            String realPathTempFile = ServletActionContext.getServletContext().getRealPath("/tempFile");
            String fileTempPath = realPathTempFile + path;
            String savePath = fileTempPath + "\\";
            if (!AccessControl.createFile(savePath).isDirectory()) {
                AccessControl.createFile(savePath).mkdirs();
            }

            if ("1".equals(fileMode)) {
                FTPUtils ftpServer = new FTPUtils();
                ftpServer.downFile(fileSavePath, savePath + fileName);
                fileSavePath = savePath + fileName;
            } else if ("4".equals(fileMode)) {
                fileName = fileSavePath.substring(fileSavePath.lastIndexOf("/") + 1);
                this.uploadService.downLoadAliyunFile(fileName, savePath);
                fileSavePath = savePath + fileName;
            } else if ("5".equals(fileMode)) {
                SFTPUtils sf = new SFTPUtils();
                fileName = fileId + "." + StringTool.getValueFromMapByKey(fileInfo, "FILE_NAME").split("\\.")[1];
                if (StringTool.getValueFromMapByKey(fileInfo, "FILE_PATH").contains(".")) {
                    sf.download(StringTool.getValueFromMapByKey(fileInfo, "FILE_PATH"), savePath + fileName);
                } else {
                    sf.download(fileSavePath + "/" + fileName, savePath + fileName);
                }

                fileSavePath = savePath + fileName;
            }

            File file = AccessControl.createFile(fileSavePath);
            if (!file.exists()) {
                boolean var40 = false;
                return var40;
            }

            in = new FileInputStream(file);
            byte[] buffer = new byte[1024];

            int len;
            while((len = in.read(buffer)) > 0) {
                out.write(buffer, 0, len);
            }

            byte[] buff = new byte[2048];

            int b;
            while(-1 != (b = in.read(buff, 0, buff.length))) {
                out.write(buff, 0, b);
            }
        }

        if ("1".equals(fileMode)) {
            this.uploadService.deleteFolder(fileSavePath);
        }

        boolean var37 = true;
        return var37;
    } catch (Exception var32) {
        var32.printStackTrace();
        var5 = false;
    } finally {
        if (in != null) {
            try {
                in.close();
            } catch (IOException var31) {
                var31.printStackTrace();
            }
        }

        if (out != null) {
            try {
                out.close();
            } catch (IOException var30) {
                var30.printStackTrace();
            }
        }

    }

    return var5;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值