1.加jar包(mysl版本不同连接的Jar包就不一样)
2.文件上传html页面
Title
管理员文件上传
3 ssm.ml 文件配置(aplication.xmx自行配置)
4.各个层的代码
5.文件上传Controer(代码)
@RequestMapping("fileUploads")
public String upload(HttpServletRequest request) throws IOException {
// 将当前上下文初始化给 CommonsMutipartResolver (多部分解析器)
CommonsMultipartResolver multipartResolver =
new CommonsMultipartResolver(request.getSession().getServletContext());
// 检查form中是否有 enctype="multipart/form-data"
if (multipartResolver.isMultipart(request)) {
// 将request变成多部分request
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
// 获取multiRequest 中所有的文件名
Iterator iter = multiRequest.getFileNames();
while (iter.hasNext()) {
// 一次遍历所有文件
MultipartFile file = multiRequest.getFile(iter.next().toString());
if (file != null && file.getOriginalFilename() != "") {
//文件格式的判断 文件名的处理省略
String fileName = file.getOriginalFilename();
String uuid = UUID.randomUUID().toString();
String path = request.getSession().getServletContext()
.getRealPath("/userFile/") + uuid + "_" + fileName;
//需在web下创建一个userFile文件夹(该文件夹下必须有一个子文件)
file.transferTo(new File(path));
// 上传到数据库
filesService.addFile(uuid + "_" + fileName);
}
}
}
return "index";
}
6.上传文件(javaWeb第二四六章)
7.文件下载(Controller代码)
7.1html文件
文件下载
文件下载
7.2前端输出文件名(根据数据库的文件名下载)
@RequestMapping(value = "filesList")
@ResponseBody
public String getFilesList() {
System.out.println("进入filesList_>");
//调用底层方法取数据获取文件名
List list = filesService.getFiles();
String string = JSON.toJSONString(list);
System.out.println(string);
return string;
}
7.3文件下载
@RequestMapping(value = "fileDowns")
public void download(HttpServletRequest request, HttpServletResponse response, String filename) throws IOException {
//checkPay.apk为需要下载的文件
//String filename = "checkPay.apk"; //我这里使用的是一个固定的文件,方法可以不用写filename参数
//获取文件的绝对路径名称,apk为根目录下的一个文件夹,这个只能获取根目录文件夹的绝对路径
String path = request.getSession().getServletContext().getRealPath("userFile") + "\" + filename;
System.out.println(path);
//得到要下载的文件
File file = new File(path);
if (!file.exists()) {
response.setContentType("text/html; charset=UTF-8");//注意text/html,和application/html
response.getWriter().print("");
response.getWriter().close();
System.out.println("您要下载的资源已被删除!!");
return;
}
//转码,免得文件名中文乱码
filename = URLEncoder.encode(filename, "UTF-8");
//设置文件下载头
response.addHeader("Content-Disposition", "attachment;filename=" + filename.substring(37));
//1.设置文件ContentType类型,这样设置,会自动判断下载文件类型
response.setContentType("multipart/form-data");
// 读取要下载的文件,保存到文件输入流
FileInputStream in = new FileInputStream(path);
// 创建输出流
OutputStream out = response.getOutputStream();
// 创建缓冲区
byte buffer[] = new byte[1024]; // 缓冲区的大小设置是个迷 我也没搞明白
int len = 0;
//循环将输入流中的内容读取到缓冲区当中
while ((len = in.read(buffer)) > 0) {
out.write(buffer, 0, len);
}
//关闭文件输入流
in.close();
// 关闭输出流
out.close();
}
7.5文件下载(javaWeb第六章)