java如何从linux服务器下载文件
目录
- 一、前端代码
- 1、html代码
- 2、js代码
- 3、css样式
- 二、后台代码
- 1、获取文件
- 2、开始下载
- 三、效果
下面是一个文件下载的简单实现。主要是客户在浏览器点击一个pdf文件,进行下载。改文件存在于公司的服务器上。
一、前端代码
1、html代码
项目文件
文章图片
合同
文章图片
计划说明书
文章图片
风险说明书
文章图片
服务协议
2、js代码
//获取文件,主要是从数据库获取到:文件名、文件路径function getProjectFiles(type) {var fileParam = {pageNo: 1,pageSize: 10,xmId: ${detail[0]["项目ID"]},cxlx: type,}; $.ajax({url: "/prod/getProjectFiles",type: "POST",data: fileParam,dataType: "JSON",success: function (ret) {if (ret && ret['code'] > 0) {debugger//渲染界面var dataList = ret['list']; download(dataList[0]["附件名"],dataList[0]["附件路径"]); }}})}//下载文件,调用后端接口function download(fileName,filePath){window.open("/downloadTwo?fileName="+encodeURI(fileName)+"&downUrl="+filePath); return ; }
3、css样式
前端的所有样式都是使用layui架构的。
二、后台代码
1、获取文件
主要是,调用存储过程,去数据库获取文件名和文件路径,后面用于下载。
/*** 获取项目文件*I_CXLXIN NUMBER, --查询类型 1|信托合同 2|信托计划说明书3|认购风险说明书 5|隐私协议|6用户服务协议*I_XSXMIN NUMBER --发行方案id* @param request* @param response* @param modelMap* @return*/@RequestMapping(value = "https://www.it610.com/getProjectFiles",method = RequestMethod.POST)@ResponseBodypublic DataResultSet getProjectFiles(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap){int pageNo = ParamUtils.getInt(request, "pageNo", 1); // 页码int pageSize = ParamUtils.getInt(request, "pageSize", 10); // 取得显示条数String cxlx = ParamUtils.getString(request, "cxlx", ""); // 查查询类型 1|信托合同 2|信托计划说明书3|认购风险说明书 5|隐私协议|6用户服务协议String xmId = ParamUtils.getString(request, "xmId", ""); //发行方案idDataResultSet productHistory = prodService.getProjectFiles(pageNo,pageSize,cxlx,xmId); return productHistory; }
2、开始下载
/*** 附件下载** @param request* @param response*/@RequestMapping("/downloadTwo")public void downloadFileTwo( HttpServletRequest request, HttpServletResponse response) {String fileName = request.getParameter("fileName"); String downUrl = request.getParameter("downUrl"); goToDownload(request, response, downUrl, fileName); }/*** 下载** @param request* @param response* @param downUrl下载的路径* @param fjmc下载文件的名称*/private void goToDownload(HttpServletRequest request, HttpServletResponse response, String downUrl, String fjmc) {response.setCharacterEncoding("UTF-8"); response.setContentType("application/x-msdownload"); try {String encodenickname = URLEncoder.encode(fjmc,"UTF-8"); //转Unicode不然ie会乱码response.setHeader("Content-Disposition", "attachment; fileName=" + new String(encodenickname.getBytes("UTF-8"), "ISO8859-1")); //这里注掉的代码是本地测试的//String path = request.getSession().getServletContext().getRealPath("/"); //String ATTACH_PATH= AppConfig.getInstance().getProperty("attach.base",""); //if (StringUtils.isNotEmpty(ATTACH_PATH)) {//path = ATTACH_PATH; //}//logger.debug("=path===" + path); File file = new File( downUrl); if (!file.exists()) {response.sendError(404, "File not found!"); return; }long fileLength = file.length(); response.setHeader("Content-Length", String.valueOf(fileLength)); BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file)); BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream()); byte[] buff = new byte[2048]; int bytesRead; while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {bos.write(buff, 0, bytesRead); }bis.close(); bos.close(); } catch (FileNotFoundException e) {e.printStackTrace(); } catch (IOException e) {e.printStackTrace(); }}
三、效果
文章图片
直接点击文件图片或者文件,就可以下载。
【java如何从linux服务器下载文件】
文章图片
上面测试,是在谷歌浏览器,火狐,IE也测试过了,亲测有效。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
推荐阅读
- JavaWeb实现用户登录与注册功能
- vue如何使用模拟的json数据查看效果
- vue|vue ref如何获取子组件属性值
- 即学即会 Serverless | 如何解决 Serverless 应用开发部署的难题()
- 如何利用vue3实现一个俄罗斯方块
- 如何开发一个分布式内存数据库(一)
- 技术分享|字节8年测试经验,从功能测试到自动化测试,我整理了这一份2000字进阶学习指南
- java|IOS 自动化测试
- Java入门之基础程序设计
- Java构造方法和方法重载详解