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;
}