java代码根据流来生成文件返回前端预览显示
时间: 2023-08-08 20:12:39 浏览: 104
以下是Java代码根据流来生成文件并返回前端预览显示的示例:
```java
@RestController
public class FileController {
@PostMapping(value = "/preview")
public ResponseEntity<?> previewFile(@RequestParam("file") MultipartFile file) throws IOException {
// 读取文件流
InputStream inputStream = file.getInputStream();
// 根据文件流生成文件
File tempFile = File.createTempFile("temp", ".pdf");
try (OutputStream outputStream = new FileOutputStream(tempFile)) {
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
}
// 返回生成的文件给前端预览
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_PDF);
headers.setContentDisposition(ContentDisposition.builder("inline").filename("preview.pdf").build());
ByteArrayResource resource = new ByteArrayResource(Files.readAllBytes(tempFile.toPath()));
return new ResponseEntity<>(resource, headers, HttpStatus.OK);
}
}
```
在这个示例中,我们使用Spring Boot框架编写了一个RestController,该Controller提供了一个名为previewFile的POST接口,用于接收前端上传的文件,并根据文件流生成一个PDF文件,并将生成的PDF文件返回给前端进行预览显示。
在Controller中,我们使用MultipartFile对象来接收前端上传的文件,然后从MultipartFile对象中获取文件流,使用File.createTempFile()方法来生成临时文件,再将文件流写入到临时文件中,最后将生成的PDF文件以ByteArrayResource的形式返回给前端进行预览显示。在返回响应时,我们设置了Content-Type为application/pdf,Content-Disposition为inline,并将ByteArrayResource作为响应主体返回给前端。
阅读全文