ssm的基础必须jar包我就不说了;
文件上传主要是:
commons-fileupload-1.3.1.jar
commons-io-2.2.jar
jsp页面:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta charset="utf-8">
<title>用户登录</title>
<%
pageContext.setAttribute("APP_path",request.getContextPath());
%>
</head>
<body>
<%--文件上传的话需要enctype="multipart/form-data"--%>
<h1>文件上传</h1>
<form action="${APP_path}/up" method="post" enctype="multipart/form-data">
文件:<input type="file" name="file">
<input type="submit" value="提交">
</form>
<hr>
<h1>文件duo 上传</h1>
<form action="${APP_path}/upduo" method="post" enctype="multipart/form-data">
文件1:<input type="file" name="file"><br>
文件2:<input type="file" name="file"><br>
文件4:<input type="file" name="file"><br>
文件3:<input type="file" name="file"><br>
<input type="submit" value="提交">
</form>
<hr>
<form action="${APP_path}/down" method="get">
<input type="submit" value="下载">
</form>
<hr>
<form action="${APP_path}/down2" method="get">
<input type="submit" value="下载2">
</form>
</body>
</html>
springmvc.xml文件:
<!-- 上传文件的设置 ,maxUploadSize=-1,表示无穷大。uploadTempDir为上传的临时目录 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置默认编码 -->
<property name="defaultEncoding" value="utf-8"></property>
<!-- 上传图片最大大小5M-->
<property name="maxUploadSize" value="5242440"></property>
</bean>
controller控制器:
package com.pw.controller;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import java.util.Set;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
@Controller
public class FileUploadController {
//多文件上传
@RequestMapping(value="/upduo",method=RequestMethod.POST)
@ResponseBody
public String upload(@RequestParam("file") MultipartFile[] uploadFile , HttpServletRequest request,HttpServletResponse response) throws Exception {
String path = request.getServletContext().getRealPath("/upload/qq");
File dir=new File(path);
if(!dir.exists()){
dir.mkdirs();
}
for (MultipartFile mul : uploadFile) {
System.out.println(mul.getOriginalFilename());
File file=new File(path,mul.getOriginalFilename());
mul.transferTo(file);
}
return "message";
}
//单文件上传
@RequestMapping(value="/up",method=RequestMethod.POST)
@ResponseBody
public String upload(MultipartFile file,HttpServletRequest request) throws IOException {
String path = request.getSession().getServletContext().getRealPath("upload/ww");
System.out.println(path+"*************path");
String fileName = file.getOriginalFilename();
File dir = new File(path,fileName);
File dir = new File(path,string);
if(!dir.exists()){
dir.mkdirs();
}
//MultipartFile自带的解析方法
file.transferTo(dir);
return "message";
}
@RequestMapping("/down2")
//获取文件路劲下的东西
public void down2(HttpServletRequest request,HttpServletResponse response) {
ServletContext application=request.getServletContext();
Set<String> strs=application.getResourcePaths("/upload");
for (String s : strs) {
System.out.println(s+"*****path");
}
}
@RequestMapping("/down")
public void down(HttpServletRequest request,HttpServletResponse response) throws Exception{
//模拟文件,myfile.txt为需要下载的文件
String fileName = request.getSession().getServletContext().getRealPath("upload")+"/myfile.txt";
//获取输入流
InputStream bis = new BufferedInputStream(new FileInputStream(new File(fileName)));
//假如以中文名下载的话
String filename = "下载文件.txt";
//转码,免得文件名中文乱码
filename = URLEncoder.encode(filename,"UTF-8");
//设置文件下载头
response.addHeader("Content-Disposition", "attachment;filename=" + filename);
//1.设置文件ContentType类型,这样设置,会自动判断下载文件类型
response.setContentType("multipart/form-data");
BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
int len = 0;
while((len = bis.read()) != -1){
out.write(len);
out.flush();
}
out.close();
}
}