Sie können die erforderlichen Klassen nur importieren, wenn Sie die Bibliothek bei stater-web in build.gradle installieren. Zuerst beschrieben. Aktualisieren Sie Gradle, wenn Sie schreiben können.
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')
}
Fügen Sie dem Argument der Post-Methode des Controllers eine Instanz der Klasse ** MultipartFile ** hinzu. Dies ist die Datei, die aus HTML mit \ ausgewählt und mit \ veröffentlicht wurde Werden Sie eine Instanz.
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;
}
Ein Ort, an dem Sie den Inhalt der gelesenen Datei in ein Textformat konvertieren und extrahieren können. Wenn Sie aus ** MultiPartFile ** lesen, handelt es sich um einen Byte-Stream. Um ihn in ein Textformat wie eine CSV-Datei zu konvertieren, konvertieren Sie ihn in ** Reader ** -> ** BufferedReader **. (Ich weiß nicht, ob ein Reader eingefügt werden muss.) In diesem Code enthält die Variable buf den Inhalt der Datei im Textformat. Sie müssen sie also nur wie eine lokale Anwendung wie Swing lesen.
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;
}
Sie können nur dann hochladen, wenn Sie ** enctype = "multipart / form-data" ** im Formular-Tag von html beschreiben.
index.html
<!--Implementierung der Schaltfläche zum Hochladen von Dateien-->
<form method="post" action="/" enctype="multipart/form-data">
<input type="submit" value="Datei hochladen">
<input type="file" name="upload_file">
</form>
<p th:text="${file_name}"></p>
<table>
<!--Unten ist die Ergebnisanzeige-->
<tr th:each="line:${file_contents}">
<td th:text=${line}></td>
</tr>
</table>
Recommended Posts