Commit 303fdc72084a5d579f26697d7d7e0bdd2cc1cff5
1 parent
66a8b43c
Sauvegarde des fichiers envoyés
Les fichiers envoyés depuis l'interface sont stockés dans le dossier files/<pseudo>_<timestamp>
Showing
4 changed files
with
58 additions
and
10 deletions
Show diff stats
19.4 KB
PFE06/src/main/java/com/PFE/ServerManager/MainController.java
@@ -3,19 +3,20 @@ package com.PFE.ServerManager; | @@ -3,19 +3,20 @@ package com.PFE.ServerManager; | ||
3 | import org.springframework.beans.factory.annotation.Autowired; | 3 | import org.springframework.beans.factory.annotation.Autowired; |
4 | import org.springframework.http.HttpStatus; | 4 | import org.springframework.http.HttpStatus; |
5 | import org.springframework.stereotype.Controller; | 5 | import org.springframework.stereotype.Controller; |
6 | +import org.springframework.ui.ModelMap; | ||
6 | import org.springframework.web.bind.annotation.*; | 7 | import org.springframework.web.bind.annotation.*; |
8 | +import org.springframework.web.multipart.MultipartFile; | ||
7 | import org.springframework.web.servlet.ModelAndView; | 9 | import org.springframework.web.servlet.ModelAndView; |
8 | 10 | ||
11 | +import java.io.*; | ||
12 | +import java.sql.Timestamp; | ||
9 | import java.util.Arrays; | 13 | import java.util.Arrays; |
10 | import java.util.HashSet; | 14 | import java.util.HashSet; |
11 | import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; | 15 | import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; |
12 | import org.springframework.security.core.context.SecurityContextHolder; | 16 | import org.springframework.security.core.context.SecurityContextHolder; |
13 | import org.springframework.security.core.Authentication; | 17 | import org.springframework.security.core.Authentication; |
14 | -import org.springframework.web.multipart.MultipartFile; | ||
15 | -import org.springframework.http.ResponseEntity; | 18 | +import org.springframework.web.context.request.RequestContextHolder; |
16 | 19 | ||
17 | -import javax.jws.WebParam; | ||
18 | -import javax.persistence.SequenceGenerator; | ||
19 | import javax.servlet.annotation.MultipartConfig; | 20 | import javax.servlet.annotation.MultipartConfig; |
20 | 21 | ||
21 | @Controller | 22 | @Controller |
@@ -86,11 +87,52 @@ public class MainController { | @@ -86,11 +87,52 @@ public class MainController { | ||
86 | return modelAndView; | 87 | return modelAndView; |
87 | } | 88 | } |
88 | 89 | ||
89 | - @PostMapping(path="/file") | ||
90 | - public ResponseEntity<?> addFile(@RequestParam("file") MultipartFile uploadedFile, @RequestParam String filename, @RequestParam String nodes) { | ||
91 | - return new ResponseEntity<>(HttpStatus.OK); | 90 | + @RequestMapping(value = "/file", method = RequestMethod.POST) |
91 | + @ResponseStatus(value = HttpStatus.OK) | ||
92 | + public void submit( | ||
93 | + @RequestParam MultipartFile file, @RequestParam String nodes, | ||
94 | + @RequestParam String filename) { | ||
95 | + | ||
96 | + | ||
97 | + Authentication auth = SecurityContextHolder.getContext().getAuthentication(); | ||
98 | + Customer customer = customerRepository.findByPseudo(auth.getName()); | ||
99 | + Timestamp timestamp = new Timestamp(System.currentTimeMillis()); | ||
100 | + File dirs = new File("files/" + customer.getPseudo() + "_" + timestamp.getTime()); | ||
101 | + dirs.mkdirs(); | ||
102 | + OutputStream outputStream = null; | ||
103 | + InputStream inputStream = null; | ||
104 | + | ||
105 | + try { | ||
106 | + inputStream = file.getInputStream(); | ||
107 | + File newFile = new File(dirs.getPath() + "/" + file.getOriginalFilename()); | ||
108 | + if (!newFile.exists()) { | ||
109 | + newFile.createNewFile(); | ||
110 | + } | ||
111 | + outputStream = new FileOutputStream(newFile); | ||
112 | + int read = 0; | ||
113 | + byte[] bytes = new byte[1024]; | ||
114 | + | ||
115 | + while((read = inputStream.read(bytes)) != -1) { | ||
116 | + outputStream.write(bytes, 0, read); | ||
117 | + } | ||
118 | + } | ||
119 | + | ||
120 | + catch (IOException e) { | ||
121 | + e.printStackTrace(); | ||
122 | + } | ||
123 | + | ||
124 | + finally { | ||
125 | + try { | ||
126 | + outputStream.close(); | ||
127 | + } | ||
128 | + catch(IOException e) { | ||
129 | + | ||
130 | + } | ||
131 | + } | ||
132 | + | ||
92 | } | 133 | } |
93 | 134 | ||
135 | + | ||
94 | @GetMapping(path="/login") | 136 | @GetMapping(path="/login") |
95 | public ModelAndView login() { | 137 | public ModelAndView login() { |
96 | ModelAndView modelAndView = new ModelAndView(); | 138 | ModelAndView modelAndView = new ModelAndView(); |
PFE06/src/main/java/com/PFE/ServerManager/SecurityConfig.java
@@ -52,7 +52,9 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { | @@ -52,7 +52,9 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { | ||
52 | .logoutSuccessUrl("/login") | 52 | .logoutSuccessUrl("/login") |
53 | .and() | 53 | .and() |
54 | .exceptionHandling() | 54 | .exceptionHandling() |
55 | - .accessDeniedPage("/denied"); | 55 | + .accessDeniedPage("/denied") |
56 | + .and() | ||
57 | + .csrf().disable(); | ||
56 | } | 58 | } |
57 | 59 | ||
58 | } | 60 | } |
59 | \ No newline at end of file | 61 | \ No newline at end of file |
PFE06/src/main/resources/static/js/home.js
@@ -107,10 +107,14 @@ $(document).ready(function() { | @@ -107,10 +107,14 @@ $(document).ready(function() { | ||
107 | $("#warningFilesNumber").modal() | 107 | $("#warningFilesNumber").modal() |
108 | } | 108 | } |
109 | 109 | ||
110 | + request.onreadystatechange = function() { | ||
111 | + if(this.readyState === XMLHttpRequest.DONE && this.status === 200) { | ||
112 | + formData = new FormData(); | ||
113 | + } | ||
114 | + } | ||
115 | + | ||
110 | request.send(formData); | 116 | request.send(formData); |
111 | 117 | ||
112 | - delete formData; | ||
113 | - formData = new FormData(); | ||
114 | } | 118 | } |
115 | else { | 119 | else { |
116 | if(readyToSend) { | 120 | if(readyToSend) { |