Vous ne pouvez pas importer les classes requises à moins d'installer la bibliothèque sur stater-web dans build.gradle. Décrit en premier. Actualisez Gradle lorsque vous pouvez écrire.
build.gradle
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
compile('org.springframework.boot:spring-boot-starter-thymeleaf')
compile('org.springframework.boot:spring-boot-starter-data-jpa')
compile ('org.springframework.boot:spring-boot-starter-web')
}
Ajoutez une instance de la classe ** MultipartFile ** à l'argument de la méthode de publication du contrôleur. C'est le fichier qui a été sélectionné à partir du HTML avec \ et publié avec \ Devenez une instance.
ModelAndViewController.java
@RequestMapping(value="/",method=RequestMethod.POST)
public ModelAndView post(
@RequestParam("upload_file")MultipartFile uploadFile,
ModelAndView mav)
{
mav.setViewName("index");
mav.addObject("file_contents", fileContents(uploadFile));
mav.addObject("recordSet", list);
return mav;
}
Un endroit pour convertir le contenu du fichier lu au format texte et l'extraire. Lors de la lecture à partir de ** MultiPartFile **, il s'agit d'un flux d'octets, donc pour le convertir en un format texte tel qu'un fichier csv, convertissez-le en ** Reader ** -> ** BufferedReader **. (Je ne sais pas s'il est nécessaire d'insérer un Reader.) Au final, dans ce code, la variable buf contient le contenu du fichier au format texte, il suffit donc de le lire de la même manière qu'une application locale telle que Swing.
ModelAndViewController.java
private List<String> fileContents(MultipartFile uploadFile) {
List<String> lines = new ArrayList<String>();
String line = null;
try {
InputStream stream = uploadFile.getInputStream();
Reader reader = new InputStreamReader(stream);
BufferedReader buf= new BufferedReader(reader);
while((line = buf.readLine()) != null) {
lines.add(line);
}
line = buf.readLine();
} catch (IOException e) {
line = "Can't read contents.";
lines.add(line);
e.printStackTrace();
}
return lines;
}
Vous ne pouvez pas télécharger à moins que vous ne décriviez ** enctype = "multipart / form-data" ** dans la balise form de html.
index.html
<!--Implémentation du bouton de téléchargement de fichier-->
<form method="post" action="/" enctype="multipart/form-data">
<input type="submit" value="Téléverser un fichier">
<input type="file" name="upload_file">
</form>
<p th:text="${file_name}"></p>
<table>
<!--Ci-dessous se trouve l'affichage des résultats-->
<tr th:each="line:${file_contents}">
<td th:text=${line}></td>
</tr>
</table>
Recommended Posts