SSM框架分页展示Hdfs文件列表上传文件,删除文件,下载文件前后端代码
时间: 2023-08-31 19:35:18 浏览: 139
SSM框架实现文件上传及其分页
4星 · 用户满意度95%
### 回答1:
SSM框架分页展示HDFS文件列表前端代码:
```
// html
<table>
<thead>
<tr>
<th>文件名</th>
<th>文件大小</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr th:each="file : ${fileList}">
<td th:text="${file.name}"></td>
<td th:text="${file.size}"></td>
<td>
<a href="#" th:onclick="'downloadFile(' + ${file.id} + ')'">下载</a>
<a href="#" th:onclick="'deleteFile(' + ${file.id} + ')'">删除</a>
</td>
</tr>
</tbody>
</table>
// javascript
function downloadFile(fileId) {
window.open('/file/download/' + fileId);
}
function deleteFile(fileId) {
if (confirm('确定删除该文件?')) {
$.ajax({
url: '/file/delete/' + fileId,
type: 'DELETE',
success: function() {
alert('删除成功');
window.location.reload();
}
});
}
}
```
SSM框架分页展示HDFS文件列表后端代码:
```
// Controller
@RequestMapping("/file")
@Controller
public class HdfsFileController {
@Autowired
private HdfsFileService hdfsFileService;
@GetMapping("/list")
public String list(Model model,
@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "10") Integer pageSize) {
PageInfo<HdfsFile> pageInfo = hdfsFileService.findPage(pageNum, pageSize);
model.addAttribute("fileList", pageInfo.getList());
model.addAttribute("pageInfo", pageInfo);
return "file/list";
}
@DeleteMapping("/delete/{fileId}")
@ResponseBody
public String delete(@PathVariable Long fileId) {
hdfsFileService.delete(fileId);
return "success";
}
@GetMapping("/download/{fileId}")
public void download(HttpServletResponse response, @PathVariable Long fileId) {
hdfsFileService.download(response, fileId);
}
}
// Service
@Service
public class HdfsFileService {
@Autowired
private HdfsTemplate hdfsTemplate;
public PageInfo<HdfsFile> findPage(Integer pageNum, Integer pageSize) {
Path path = new Path("/");
List<HdfsFile> fileList = new ArrayList<>();
try {
FileSystem fs = hdfsTemplate.getFileSystem();
FileStatus[] fileStatuses = fs.listStatus(path);
for (FileStatus fileStatus : fileStatuses) {
HdfsFile hdfsFile = new HdfsFile();
hdfsFile.setName(fileStatus.getPath().getName());
hdfsFile.setSize(fileStatus.getLen());
fileList.add(hdfsFile);
}
} catch (IOException e) {
e.printStackTrace();
}
return PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> fileList);
}
public void delete(Long fileId) {
Path path = new Path("/" + fileId);
try {
FileSystem fs = hdfsTemplate.getFileSystem();
fs.delete(path, true);
} catch (IOException e) {
e.printStackTrace();
}
}
public void download(HttpServletResponse response, Long fileId) {
Path path = new Path("/" + fileId);
try {
FileSystem fs = hdfsTemplate.getFileSystem();
FSDataInputStream in = fs.open(path);
response.setHeader("Content-disposition", "attachment;filename=" + fileId);
IOUtils.copyBytes(in, response.getOutputStream(), 4096, false);
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
// Entity
public class HdfsFile {
private Long id;
private String name;
private Long size;
// getter and setter
}
```
### 回答2:
SSM框架是指使用Spring、SpringMVC和MyBatis这三个开源框架来进行Java Web应用开发的技术栈。
首先,我们需要在后端实现HDFS文件的分页展示功能。在Spring MVC的控制器中,我们需要使用Hadoop的Java API来连接HDFS并获取文件列表。可以使用hadoop-hdfs-client的依赖,然后使用FileSystem类来连接HDFS。通过调用FileSystem的listStatus方法,可以获取HDFS中指定路径下的文件列表。接着,我们可以将获取到的文件列表分页展示在前端页面上。
在前端页面上,我们可以使用HTML、CSS和JavaScript来渲染文件列表。可以使用表格或列表形式展示文件名、大小、修改日期等信息,并为每个文件提供删除和下载按钮,以方便用户操作。
对于文件的上传功能,我们可以在前端页面上添加一个文件上传的输入框和提交按钮。用户可以选择要上传的文件后,点击提交按钮,将文件发送到后端的Spring MVC控制器中。在后端,我们可以使用Java的MultipartFile类来接收上传的文件,然后调用Hadoop的Java API来将文件写入HDFS中。
对于文件的删除功能,我们可以为每个文件的删除按钮添加一个点击事件。当用户点击删除按钮时,前端发送请求到后端的Spring MVC控制器中,传递要删除的文件名。然后,在后端中,我们可以通过Hadoop的Java API来连接HDFS并调用FileSystem的delete方法来删除指定的文件。
对于文件的下载功能,我们可以为每个文件的下载按钮添加一个点击事件。当用户点击下载按钮时,前端发送请求到后端的Spring MVC控制器中,传递要下载的文件名。在后端,我们可以通过Hadoop的Java API来连接HDFS并调用FileSystem的open方法来打开指定的文件流。然后,我们可以利用Spring MVC提供的响应对象,将文件流写入响应中,实现文件下载功能。
以上是SSM框架下实现HDFS文件列表分页展示、文件上传、文件删除和文件下载的前后端代码。通过这些代码,我们可以在Java Web应用中方便地管理和操作HDFS中的文件。
阅读全文