2026-4-2提交:pdf预览接口
This commit is contained in:
parent
5366d13f91
commit
a3fbcafc24
@ -8,6 +8,8 @@ import org.springframework.http.ResponseEntity;
|
|||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 事件导出记录 - Controller层
|
* 事件导出记录 - Controller层
|
||||||
*
|
*
|
||||||
@ -42,4 +44,9 @@ public class DnerEventExportRecordController {
|
|||||||
public ResponseEntity<Resource> download(@PathVariable String id) {
|
public ResponseEntity<Resource> download(@PathVariable String id) {
|
||||||
return dnerEventExportRecordService.download(id);
|
return dnerEventExportRecordService.download(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/preview/{id}")
|
||||||
|
public void previewPdf(@PathVariable Long id, HttpServletResponse response) {
|
||||||
|
dnerEventExportRecordService.previewPdf(id, response);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,6 +6,8 @@ import org.springframework.core.io.Resource;
|
|||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 事件导出记录 服务接口
|
* 事件导出记录 服务接口
|
||||||
*
|
*
|
||||||
@ -29,4 +31,12 @@ public interface IDnerEventExportRecordService extends IService<DnerEventExportR
|
|||||||
* @return 响应体
|
* @return 响应体
|
||||||
*/
|
*/
|
||||||
ResponseEntity<Resource> download(String id);
|
ResponseEntity<Resource> download(String id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 预览PDF
|
||||||
|
*
|
||||||
|
* @param id 导出记录ID
|
||||||
|
* @param response 响应体
|
||||||
|
*/
|
||||||
|
void previewPdf(Long id, HttpServletResponse response);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -14,7 +14,13 @@ import org.springframework.http.ResponseEntity;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.io.BufferedInputStream;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.net.URLEncoder;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -60,4 +66,35 @@ public class DnerEventExportRecordServiceImpl
|
|||||||
}
|
}
|
||||||
return FileDownloadUtil.downLoad(record.getFilePath(), record.getFileName());
|
return FileDownloadUtil.downLoad(record.getFilePath(), record.getFileName());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void previewPdf(Long id, HttpServletResponse response) {
|
||||||
|
DnerEventExportRecord record = getById(id);
|
||||||
|
File pdfFile = new File(record.getFilePath());
|
||||||
|
|
||||||
|
if (!pdfFile.exists()) {
|
||||||
|
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try (FileInputStream fis = new FileInputStream(pdfFile);
|
||||||
|
BufferedInputStream bis = new BufferedInputStream(fis);
|
||||||
|
OutputStream os = response.getOutputStream()) {
|
||||||
|
|
||||||
|
// 设置响应头 = 关键:告诉浏览器这是PDF,直接预览
|
||||||
|
response.setContentType("application/pdf");
|
||||||
|
response.setHeader("Content-Disposition",
|
||||||
|
"inline;filename=" + URLEncoder.encode(pdfFile.getName(), "UTF-8"));
|
||||||
|
|
||||||
|
// 写出文件流
|
||||||
|
byte[] buffer = new byte[1024];
|
||||||
|
int len;
|
||||||
|
while ((len = bis.read(buffer)) != -1) {
|
||||||
|
os.write(buffer, 0, len);
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -9,7 +9,7 @@ spring:
|
|||||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||||
url: jdbc:mysql://127.0.0.1:3306/south_power_grid?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
|
url: jdbc:mysql://127.0.0.1:3306/south_power_grid?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
|
||||||
username: root
|
username: root
|
||||||
password: 123456
|
password: 123456 # Nfdw@202510
|
||||||
hikari:
|
hikari:
|
||||||
connection-timeout: 30000
|
connection-timeout: 30000
|
||||||
validation-timeout: 5000
|
validation-timeout: 5000
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user