feat(笔记预览): 实现大文件分块加载功能
添加分块加载API接口及前端实现,支持大文件(>500KB)的分页加载,提升大文件预览体验 后端实现分块逻辑并添加权限检查,前端添加加载提示和滚动加载功能
This commit is contained in:
@@ -3,6 +3,7 @@ package com.test.bijihoudaun.controller;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.test.bijihoudaun.common.response.R;
|
||||
import com.test.bijihoudaun.entity.MarkdownFile;
|
||||
import com.test.bijihoudaun.entity.MarkdownFileChunk;
|
||||
import com.test.bijihoudaun.entity.MarkdownFileVO;
|
||||
import com.test.bijihoudaun.service.MarkdownFileService;
|
||||
import com.test.bijihoudaun.util.SecurityUtil;
|
||||
@@ -117,4 +118,26 @@ public class MarkdownController {
|
||||
return R.success(files);
|
||||
}
|
||||
|
||||
@Operation(summary = "分块加载Markdown文件内容", description = "用于大文件(> 500KB)的分页加载")
|
||||
@Parameters({
|
||||
@Parameter(name = "id", description = "文件ID", required = true),
|
||||
@Parameter(name = "chunkIndex", description = "块索引(从0开始)", required = false),
|
||||
@Parameter(name = "chunkSize", description = "块大小(字符数),默认10000", required = false)
|
||||
})
|
||||
@GetMapping("/{id}/chunk")
|
||||
public R<MarkdownFileChunk> getMarkdownChunk(
|
||||
@PathVariable Long id,
|
||||
@RequestParam(defaultValue = "0") int chunkIndex,
|
||||
@RequestParam(defaultValue = "10000") int chunkSize) {
|
||||
|
||||
// 获取当前认证状态
|
||||
boolean isAuthenticated = SecurityUtil.isUserAuthenticated();
|
||||
|
||||
MarkdownFileChunk chunk = markdownFileService.getMarkdownChunk(id, chunkIndex, chunkSize, isAuthenticated);
|
||||
if (ObjectUtil.isNotNull(chunk)) {
|
||||
return R.success(chunk);
|
||||
}
|
||||
return R.fail("文件未找到");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user