上传:
jsp:
<form action="onefile" method="post" enctype="multipart/form-data">
<p>单文件:
<input type="file" name="fileTest"><br/>
<p>多文件:
<input type="file" name="fileList" multiple>
<input type="submit" value="提交">
</form>
controller:
@RequestMapping("/insertT")//添加 实现单文件和多文件上传//MultipartFile file
public String insertT(MultipartHttpServletRequest request,Trainingtask trainingtask){
String originalFilename1=new String();
List<MultipartFile> fileList1 = request.getFiles("fileTest");
if (fileList1.size()>0) {
//遍历文件列表
Iterator<MultipartFile> fileTte = fileList1.iterator();
while (fileTte.hasNext()) {
//获得每一个文件
MultipartFile multipartFile = fileTte.next();
//获得原文件名
originalFilename1= multipartFile.getOriginalFilename();
String realPath=request.getSession().getServletContext().getRealPath("/upload/tongzhi");
File dir = new File(realPath);
if(!dir.exists()){
dir.mkdirs();
}
String filePath=realPath+"/"+originalFilename1;
System.out.println("filePath:"+filePath);
//保存文件
File dest = new File(filePath);
if(!(dest.exists())){
try {
multipartFile.transferTo(dest);
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println("_------------------------------------------------");
}
}
StringBuffer originalFilename =new StringBuffer();
List<MultipartFile> fileList = request.getFiles("fileList");
if (fileList.size()>0) {
//遍历文件列表
Iterator<MultipartFile> fileTte = fileList.iterator();
while (fileTte.hasNext()) {
//获得每一个文件
MultipartFile multipartFile = fileTte.next();
//获得原文件名
String originalFilename2= multipartFile.getOriginalFilename();
originalFilename.append(originalFilename2);
originalFilename.append(",");
System.out.println("originalFilename:"+originalFilename);
String realPath=request.getSession().getServletContext().getRealPath("/upload/renwu");
File dir = new File(realPath);
if(!dir.exists()){
dir.mkdirs();
}
String filePath=realPath+"/"+originalFilename2;
System.out.println("filePath:"+filePath);
//保存文件
File dest = new File(filePath);
if(!(dest.exists())){
try {
multipartFile.transferTo(dest);
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println("_------------------------------------------------");
}
}
trainingtask.setTrainingnotice(originalFilename1);
originalFilename.deleteCharAt(originalFilename.length() - 1);
trainingtask.setTrainingmaterials(originalFilename.toString());
trainingtaskDao.insert(trainingtask);
return "fbpx";
}
下载:
点击下载会进入到这个控制器并返回到如下页面并且能够下载了
@RequestMapping("/listFile")
public String listFile(HttpServletRequest request,
HttpServletResponse response ,Model model) {
String[] selectadress = trainingtaskDao.selectadress();
request.setAttribute("selectadress", selectadress);
return "listFile";
}
jsp:
<c:forEach var="me" items="${selectadress }">
${me}<a href="downT?filename=${me}">下载</a><br/>
</c:forEach>
<input type="button" value="返 回" onclick="history.go(-1)"/>
再次点击下载会跳入下面的控制器
@RequestMapping("/downT")
public void Down(HttpServletRequest request,HttpServletResponse response){
String fileName=request.getParameter("filename") ;
if(fileName!=null){
String realPath=request.getSession().getServletContext().getRealPath("/upload/tongzhi");//tomcat的WebRoot下的路径
File file = new File(realPath,fileName);
if(file.exists()){
response.setContentType("multipart/form-data;application/octet-stream;charset=utf-8");// 设置强制下载不打开
fileName = fileName.replaceAll("\\+","%20");
response.addHeader("Content-Type", "text/html; charset=utf-8");
try {
response.addHeader("Content-Disposition", "attachment;fileName=" + new String(fileName.getBytes("UTF-8"),"ISO-8859-1"));
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
byte[] buffer=new byte[1024];
FileInputStream fis=null;
BufferedInputStream bis=null;
try {
fis=new FileInputStream(file);
bis=new BufferedInputStream(fis);
OutputStream os=response.getOutputStream();
int i=bis.read(buffer);
while (i!=-1) {
os.write(buffer, 0, i);
i=bis.read(buffer);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
if(bis!=null){
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(fis != null){
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
}