本文实例为大家分享了java实现文件上传下载的具体代码,供大家参考,具体内容如下
1.上传单个文件
Controller控制层
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
import java.io.File;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
@Controller
@RequestMapping("testup")
public class UploadController {
private static Logger LG= LoggerFactory.getLogger(UploadController.class);
/**
* 9.①单个文件上传
* @param file
* @param redirectAttributes
* @return
*/
@RequestMapping(value="/upload",method=RequestMethod.POST,consumes="multipart/form-data")
public String uploadFile(@RequestParam MultipartFile file,RedirectAttributes redirectAttributes){
if(file.isEmpty()){
redirectAttributes.addFlashAttribute("message", "Plse select file");
return "redirect:/test/index";
}
try {
String fileName=file.getOriginalFilename();
/*上传文件存储位置*/
String destFileName="D:\\whupload"+File.separator+fileName;
File destFile=new File(destFileName);
file.transferTo(destFile);
//文件上传成功显示
//redirectAttributes.addAttribute("message","upload file success.");
redirectAttributes.addFlashAttribute("message", "upload file success.");
} catch (Exception e) {
//文件上传失败显示
redirectAttributes.addFlashAttribute("message", "upload file fail");
LG.debug(e.getMessage());
}
return "redirect:/test/index";
}
}
|
前端页面源码
1
2
3
4
5
|
< p >上传文件,使用multipart/form-data类型</ p >
< form action = "/testup/upload" method = "post" enctype = "multipart/form-data" >
< input type = "file" name = "file" >
< button type = "submit" >上传</ button >
</ form >
|
2.上传多个文件
Controller控制层
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
import java.io.File;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
@Controller
@RequestMapping ( "testup" )
public class UploadController {
private static Logger LG= LoggerFactory.getLogger(UploadController. class );
/**
* 9.②多个文件上传
*/
@RequestMapping (value= "/uploadBatchFile" ,method=RequestMethod.POST,consumes= "multipart/form-data" )
public String uploadBatchFile( @RequestParam MultipartFile[] files,RedirectAttributes redirectAttributes){
boolean isEmpty= true ;
try {
for (MultipartFile multipartFile : files) {
if (multipartFile.isEmpty()){
continue ;
}
String fileName=multipartFile.getOriginalFilename();
String destFileName= "D:\\whupload" +File.separator+fileName;
File destFile= new File(destFileName);
multipartFile.transferTo(destFile);
isEmpty= false ;
}
//int i=1/0;
//localhost:8086/test/index?message=upload file success
//redirectAttributes.addAttribute("message","upload file success.");
} catch (Exception e) {
// TODO Auto-generated catch block
redirectAttributes.addFlashAttribute( "message" , "upload file fail" );
LG.debug(e.getMessage());
return "redirect:/test/index" ;
}
if (isEmpty){
redirectAttributes.addFlashAttribute( "message" , "Plse select file" );
} else {
redirectAttributes.addFlashAttribute( "message" , "upload file success." );
}
return "redirect:/test/index" ;
}
}
|
前端页面源码
1
2
3
4
5
|
< form action = "/testup/uploadBatchFile" method = "post" enctype = "multipart/form-data" >
< input type = "file" name = "files" >
< input type = "file" name = "files" >
< button type = "submit" >上传</ button >
</ form >
|
3.下载文件
Controller控制器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
import java.io.File;
import java.net.MalformedURLException;
import java.nio.file.Paths;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.Resource;
import org.springframework.core.io.UrlResource;
import org.springframework.http.HttpHeaders;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("testup")
public class UploadController {
private static Logger LG= LoggerFactory.getLogger(UploadController.class);
/**
* 10.下载文件
*/
@RequestMapping("/download")
@ResponseBody
public ResponseEntity< Resource > downloadFile(@RequestParam String fileName){
try {
Resource resource=new UrlResource(
//拼接下载的文件的原路径
Paths.get("D:/whupload"+File.separator+fileName).toUri());
if(resource.exists() && resource.isReadable()){
return ResponseEntity.ok()
.header(HttpHeaders.CONTENT_TYPE, "application/octet-stream")
.header(HttpHeaders.CONTENT_DISPOSITION,"attachment;filename=\""+
resource.getFilename()+"\"").body(resource);
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
LG.debug(e.getMessage());
}
return null;
}
}
|
前端页面源码
1
2
|
< p >下载文件,这里设置默认下载文件为Demo.txt,fileName是下载文件名</ p >
< a href = "/testup/download?fileName=Demo.txt" rel = "external nofollow" >download file</ a >
|
运行效果
最后,需要注意的是,文件上传有默认的大小限制
在配置文件中加入,即可消除限制
1
2
|
spring.servlet.multipart.max-file-size=- 1
spring.servlet.multipart.max-request-size=- 1
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/wh456413/article/details/107302180