使用spring boot做导入csv文件,并点击文件名显示文件内容,用完整代码实现
时间: 2024-02-24 11:58:00 浏览: 17
好的,这里是一个基于Spring Boot的CSV文件上传和显示文件内容的完整代码实现。
首先,我们需要添加以下依赖:
```
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>5.3</version>
</dependency>
```
然后,我们需要创建一个Controller类来处理上传和显示CSV文件的请求:
```java
@RestController
@RequestMapping("/csv")
public class CsvController {
// 上传文件
@PostMapping("/upload")
public ResponseEntity<String> uploadCsv(@RequestParam("file") MultipartFile file) {
try {
// 读取CSV文件内容
List<String[]> rows = new CSVReader(new InputStreamReader(file.getInputStream())).readAll();
// TODO: 保存文件内容到数据库或其他存储介质中
return ResponseEntity.ok().body("File uploaded successfully.");
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to upload file: " + e.getMessage());
}
}
// 显示文件内容
@GetMapping("/view/{filename}")
public ResponseEntity<List<String[]>> viewCsv(@PathVariable("filename") String filename) {
try {
// TODO: 从数据库或其他存储介质中读取文件内容
List<String[]> rows = new ArrayList<>();
rows.add(new String[]{"Name", "Age", "Gender"});
rows.add(new String[]{"John", "30", "Male"});
rows.add(new String[]{"Jane", "25", "Female"});
return ResponseEntity.ok().body(rows);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
}
}
}
```
这个Controller类定义了两个请求处理方法:`uploadCsv`用于上传CSV文件,`viewCsv`用于显示CSV文件内容。
在`uploadCsv`方法中,我们使用`MultipartFile`类型的参数来接收上传的文件,然后使用`CSVReader`类来读取CSV文件中的内容,并将其保存到数据库或其他存储介质中。在这里,我们只是简单地返回一个成功上传的消息。
在`viewCsv`方法中,我们使用`@PathVariable`注解来接收文件名参数,然后从数据库或其他存储介质中读取CSV文件内容,并将其作为`List<String[]>`类型的响应体返回给客户端。在这里,我们只是简单地返回一个硬编码的CSV文件内容。
最后,我们还需要创建一个HTML页面来上传文件和显示文件内容:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>CSV Viewer</title>
</head>
<body>
<form action="/csv/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<button type="submit">Upload</button>
</form>
<hr>
<table>
<thead>
<tr>
<th>Name</th>
<th>Age</th>
<th>Gender</th>
</tr>
</thead>
<tbody id="csv-data">
</tbody>
</table>
<script>
function loadCsv(filename) {
fetch('/csv/view/' + filename)
.then(response => response.json())
.then(data => {
const tbody = document.getElementById('csv-data');
tbody.innerHTML = '';
data.forEach(row => {
const tr = document.createElement('tr');
row.forEach(cell => {
const td = document.createElement('td');
td.innerText = cell;
tr.appendChild(td);
});
tbody.appendChild(tr);
});
})
.catch(error => {
console.error(error);
});
}
</script>
</body>
</html>
```
这个HTML页面包含一个上传文件的表单,以及一个用于显示CSV文件内容的表格。在上传文件后,我们可以点击文件名来显示文件内容,这里使用了JavaScript来异步获取并显示文件内容。
好了,这就是一个基于Spring Boot的CSV文件上传和显示文件内容的完整代码实现。