最近在學習SpringBoot,以下是最近學習整理的實現文件上傳下載的Java代碼:
1、開發環境:
IDEA15+ Maven+JDK1.8
2、新建一個maven工程:
3、工程框架
4、pom.xml文件依賴項
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
|
< project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd" > < modelVersion >4.0.0</ modelVersion > < groupId >SpringWebContent</ groupId > < artifactId >SpringWebContent</ artifactId > < packaging >war</ packaging > < version >1.0-SNAPSHOT</ version > < name >SpringWebContent Maven Webapp</ name > < url >http://maven.apache.org</ url > < parent > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-starter-parent</ artifactId > < version >1.4.3.RELEASE</ version > </ parent > < dependencies > < dependency > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-starter-thymeleaf</ artifactId > </ dependency > < dependency > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-devtools</ artifactId > < optional >true</ optional > </ dependency > < dependency > < groupId >junit</ groupId > < artifactId >junit</ artifactId > < version >3.8.1</ version > < scope >test</ scope > </ dependency > </ dependencies > < properties > < java.version >1.8</ java.version > </ properties > < build > < finalName >SpringWebContent</ finalName > < plugins > < plugin > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-maven-plugin</ artifactId > </ plugin > </ plugins > </ build > </ project > |
5、Application.java
1
2
3
4
5
6
7
8
9
|
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application. class , args); } } |
6、FileController.java
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.util.List; @Controller public class FileController { @RequestMapping ( "/greeting" ) public String greeting( @RequestParam (value= "name" , required= false , defaultValue= "World" ) String name, Model model) { model.addAttribute( "name" , name); return "greeting" ; } private static final Logger logger = LoggerFactory.getLogger(FileController. class ); //文件上傳相關代碼 @RequestMapping (value = "upload" ) @ResponseBody public String upload( @RequestParam ( "test" ) MultipartFile file) { if (file.isEmpty()) { return "文件為空" ; } // 獲取文件名 String fileName = file.getOriginalFilename(); logger.info( "上傳的文件名為:" + fileName); // 獲取文件的后綴名 String suffixName = fileName.substring(fileName.lastIndexOf( "." )); logger.info( "上傳的后綴名為:" + suffixName); // 文件上傳后的路徑 String filePath = "E://test//" ; // 解決中文問題,liunx下中文路徑,圖片顯示問題 // fileName = UUID.randomUUID() + suffixName; File dest = new File(filePath + fileName); // 檢測是否存在目錄 if (!dest.getParentFile().exists()) { dest.getParentFile().mkdirs(); } try { file.transferTo(dest); return "上傳成功" ; } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return "上傳失敗" ; } //文件下載相關代碼 @RequestMapping ( "/download" ) public String downloadFile(org.apache.catalina.servlet4preview.http.HttpServletRequest request, HttpServletResponse response){ String fileName = "FileUploadTests.java" ; if (fileName != null ) { //當前是從該工程的WEB-INF//File//下獲取文件(該目錄可以在下面一行代碼配置)然后下載到C:\\users\\downloads即本機的默認下載的目錄 String realPath = request.getServletContext().getRealPath( "//WEB-INF//" ); File file = new File(realPath, fileName); if (file.exists()) { response.setContentType( "application/force-download" ); // 設置強制下載不打開 response.addHeader( "Content-Disposition" , "attachment;fileName=" + fileName); // 設置文件名 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); } System.out.println( "success" ); } catch (Exception 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(); } } } } } return null ; } //多文件上傳 @RequestMapping (value = "/batch/upload" , method = RequestMethod.POST) @ResponseBody public String handleFileUpload(HttpServletRequest request) { List<MultipartFile> files = ((MultipartHttpServletRequest) request) .getFiles( "file" ); MultipartFile file = null ; BufferedOutputStream stream = null ; for ( int i = 0 ; i < files.size(); ++i) { file = files.get(i); if (!file.isEmpty()) { try { byte [] bytes = file.getBytes(); stream = new BufferedOutputStream( new FileOutputStream( new File(file.getOriginalFilename()))); stream.write(bytes); stream.close(); } catch (Exception e) { stream = null ; return "You failed to upload " + i + " => " + e.getMessage(); } } else { return "You failed to upload " + i + " because the file was empty." ; } } return "upload successful" ; } |
7、index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<!DOCTYPE html> < html lang = "en" > < head > < title >Getting Started: Serving Web Content</ title > < meta http-equiv = "Content-Type" content = "text/html; charset=UTF-8" /> </ head > < body > < p >Get your greeting < a href = "/greeting" rel = "external nofollow" >here</ a ></ p > < form action = "/upload" method = "POST" enctype = "multipart/form-data" > 文件:< input type = "file" name = "test" /> < input type = "submit" /> </ form > < a href = "/download" rel = "external nofollow" >下載test</ a > < p >多文件上傳</ p > < form method = "POST" enctype = "multipart/form-data" action = "/batch/upload" > < p >文件1:< input type = "file" name = "file" /></ p > < p >文件2:< input type = "file" name = "file" /></ p > < p >< input type = "submit" value = "上傳" /></ p > </ form > </ html > |
完整工程地址:SpringWebContent.rar
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:http://blog.csdn.net/coding13/article/details/54577076