java 后台返回文件流到浏览器

这篇博客详细介绍了如何在Java后端通过文件流的方式将文件发送到前端浏览器,内容涵盖关键步骤和实现原理,适合Java后端开发者学习。
摘要由CSDN通过智能技术生成
package com.springbootblog.controller;

import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;

/**
*@title : JavaClass
*@author:zyh
*@createDate:2018/9/13 21:46
*
**/
@RequestMapping(value = "/queryImg")
@Controller
public class ReadImgController {
@ApiOperation(value = "img", produces = "application/json")
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
后台返回的 PDF 文件流通常是以字节数组(byte array)或流(stream)的形式返回。具体的格式可能会根据后台框架或库的不同而有所变化,但通常情况下,PDF 文件流的格式是二进制的。 在Java,可以使用`InputStream`来表示文件流。以下是一个使用Spring Framework的示例,演示了如何将PDF文件作为流返回前端: ```java import org.springframework.core.io.InputStreamResource; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.io.ByteArrayInputStream; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @RestController public class PDFController { @GetMapping(value = "/pdf", produces = MediaType.APPLICATION_PDF_VALUE) public ResponseEntity<InputStreamResource> getPdf() throws IOException { // 从文件系统或其他地方获取PDF文件的字节数组 byte[] pdfBytes = getPDFBytes(); // 创建一个输入流 ByteArrayInputStream inputStream = new ByteArrayInputStream(pdfBytes); // 创建HTTP头部,指定内容类型和文件名 HttpHeaders headers = new HttpHeaders(); headers.add(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_PDF_VALUE); headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=example.pdf"); // 创建InputStreamResource对象,将输入流和HTTP头部封装在一起 InputStreamResource resource = new InputStreamResource(inputStream); // 返回带有文件流的ResponseEntity return ResponseEntity.ok() .headers(headers) .body(resource); } private byte[] getPDFBytes() throws IOException { // 从文件系统或其他地方读取PDF文件的字节数组 Path path = Paths.get("path/to/example.pdf"); return Files.readAllBytes(path); } } ``` 在上述示例,`getPdf()`方法返回了一个`ResponseEntity`对象,其包含了一个`InputStreamResource`作为响应体。`InputStreamResource`封装了一个`ByteArrayInputStream`,这是用于表示PDF文件流的输入流。 通过设置适当的HTTP头部,指定内容类型为"application/pdf"和文件名为"example.pdf",可以告诉浏览器如何处理这个响应。在这个例子,我们使用Spring Framework的`@GetMapping`注解来处理求,并使用`produces`属性设置响应的内容类型为"application/pdf"。 注意,上述示例仅供参考,具体实现可能会因为使用的后台框架或库而有所不同。您可以根据自己的需求和使用的技术选择适合的方式来返回PDF文件流。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值