Layui+SSM上传下载文件
上传Controller
//上传 @RequestMapping("/sc") @ResponseBody public String sc(@RequestParam("uploadFile")MultipartFile file, HttpServletRequest req, HttpServletResponse resp)throws IllegalStateException, IOException { System.out.println("进去上传方法"); //判断上传文件是否为空,为空就跳转到失败页面 // 获取文件存储路径(绝对路径) //String path=req.getServletContext().getRealPath("file"); String path="D:\\公寓管理系统\\图片"; // 获取原文件名 String filename=file.getOriginalFilename(); System.out.println(filename); // 创建文件实例 File filepath=new File(path,filename); // 如果文件目录不存在,创建目录 if (!filepath.getParentFile().exists()){ filepath.getParentFile().mkdirs(); System.out.println("创建目录" + filepath); } // 写入文件 file.transferTo(filepath); //ReturnJsonData.returnJson(filename,resp); return filename; }
页面
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <link rel="stylesheet" href="/view/layui/css/layui.css"/> <body> <form class="layui-form" enctype="multipart/form-data"> <div class="layui-form-item"> <label class="layui-form-label">患者编号:</label> <div class="layui-input-inline layui-col-md4"> <input type="text" name="puser" id="puser" required lay-verify="required" placeholder="患者编号" autocomplete="off" class="layui-input"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">请选择上传文件类别</label> <div class="layui-input-block"> <select name="uposition" lay-filter="aihao"> <option value="0">遗传诊断报告</option> <option value="1">基因测序报告</option> <option value="2">诊断病例</option> </select> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">请选择上传文件</label> <input type="file" name="uploadFile" id="uploadFile"> <button type="button" class="layui-btn" id="btn">开始上传</button> </div> <div class="layui-form-item"> <label class="layui-form-label">备注:</label> <div class="layui-input-block"> <textarea name="remark" placeholder="上传文件信息...100个字符以内" class="layui-textarea"></textarea> </div> </div> <div class="layui-form-item"> <div class="layui-inline"> <div class="layui-input-block"> <button type="submit" class="layui-btn" lay-submit lay-filter="formDemo">立即提交</button> <button type="reset" class="layui-btn layui-btn-primary">重置</button> </div> </div> </div> </form> </body> <script src="/view/js/jquery-3.3.1.js"></script> <script src="/view/layui/layui.js"></script> <!--ajax编写--> <script> </script> </html>
下载
/** * 下载 * @return */ @RequestMapping("/xz") @ResponseBody public ResponseEntity<byte[]> download(HttpServletRequest req,String filename,HttpServletResponse resp){ System.out.println("进入方法"); //文件地址在项目内部的(目的地地址信息) //String upload = req.getServletContext().getRealPath("file"); //目的仓库在项目之外 /* List<Map> map=service.xz(); ReturnJsonData.returnJson(ResultJson.success(map),resp);*/ Cases c=new Cases(); c.setCid(3); Cases cases=service.findxz(c); //上传的前一半 String upload = "D:\\公寓管理系统\\图片\\"; filename=cases.getCaddress(); System.out.println(upload); //先拼接具体的位置路径,然后通过file进行建立链接filename File file =new File(upload+File.separator+filename); if(!file.exists()){//如果不存在文件,直接返回null System.out.println(file); return null; } try { //创建标头文件对象 HttpHeaders headers = new HttpHeaders(); //解决乱码问题 String downloadfile = new String(filename.getBytes(StandardCharsets.UTF_8),"iso-8859-1"); //以下载的方式打开文件 headers.setContentDispositionFormData("attachment", downloadfile); //二进制流 headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); return new ResponseEntity<byte []>(FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED); } catch (Exception e) { e.printStackTrace(); } return null; }