服务器文件下载

项目需求:在列表页面上提供文件下载链接

项目实现:

1.准备excel文件,将英文命名的excel文件放入 src/main/resources 目录下

2.Java实现



public void downModel(){

logger.info("loanUserOpenAccountBatchModel start");
JSONObject jsonObject = new JSONObject();

jsonObject.put("function", "downModel");
writeJSONObject(jsonObject);

}

public HttpServletResponse downLoanUserOpenAccountModel(){

HttpServletResponse response = ServletActionContext.getResponse();
String path = "";
try {
// /excelModel/loan_user_open_account_batch.xlsx 本地测试地址
File textf = new File("/data/j2ee/jr/excelModel", "loan_user_open_account_batch.xlsx");
// path = ServletActionContext.getServletContext().getResource("/data/j2ee/jr/excelModel").getPath();
path = textf.getPath();
logger.info("downLoanUserOpenAccountModel path:"+path);
} catch (Exception e) {
logger.error("downLoanUserOpenAccountModel error"+e.getMessage(),e);
}
logger.info("Excel 模板下载 ,path:"+path);
try {
// path是指欲下载的文件的路径。
File file = new File(path);
// 取得文件名。
String filename = file.getName();
// 取得文件的后缀名。
String ext = filename.substring(filename.lastIndexOf(".") + 1);
// 以流的形式下载文件。
InputStream fis = new BufferedInputStream(new FileInputStream(path));
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
fis.close();
// 清空response
response.reset();

// 设置response的Header
//设置文件ContentType类型,这样设置,会自动判断下载文件类型
response.setContentType("multipart/form-data");
response.addHeader("Content-Disposition", "attachment;filename=" + new String("借款人批量开户模板".getBytes("gb2312"), "ISO8859-1" )+"."+ext.toLowerCase());
response.addHeader("Content-Length", "" + file.length());
OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
response.setContentType("application/octet-stream");
toClient.write(buffer);
toClient.flush();
toClient.close();
logger.info("EXCEL 模板下载 成功");

} catch (IOException ex) {
ex.printStackTrace();
logger.error("EXCEL 模板下载 异常");
return null ;
}
return response;

}


3.注意

文件的存放路径

在本地测试及测试环境提测


try {
path = ServletActionContext.getServletContext().getResource("/excelModel/loan_user_open_account_batch.xlsx").getPath();
} catch (MalformedURLException e) {
e.printStackTrace();
}


因为文件放在 src/main/resources 所以此种方式能够获取到文件

但发布到正式环境时,运维说文件不能放在此目录下,src 下只能防止工程的配置文件

所以只能放置在某个其他目录下,对应的下载地址则变为linux 服务上的路径地址

文件的获取方式也不能使用 getResource
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值