java如何给前端返回pdf文件, 前端如何下载
时间: 2024-03-26 19:34:19 浏览: 138
java实现文件上传、下载.pdf
要给前端返回 PDF 文件,可以使用 Java 中的 HttpServletResponse 对象来实现,具体步骤如下:
1. 设置响应头,告诉浏览器返回的是一个文件,而非普通的 HTML 页面:
```java
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "attachment;filename=example.pdf");
```
2. 获取 PDF 文件的输入流,可以从本地文件系统或者数据库中读取:
```java
File file = new File("example.pdf");
InputStream inputStream = new FileInputStream(file);
```
3. 将输入流的内容写入响应输出流中:
```java
OutputStream outputStream = response.getOutputStream();
byte[] buffer = new byte[1024];
int len;
while ((len = inputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, len);
}
outputStream.flush();
outputStream.close();
inputStream.close();
```
至于如何在前端进行下载,可以在页面上添加一个下载按钮,点击后通过 JavaScript 代码发起下载请求。具体实现方法可以参考以下代码:
```javascript
let xhr = new XMLHttpRequest();
xhr.open('GET', '/download/pdf', true);
xhr.responseType = 'blob';
xhr.onload = function () {
if (this.status === 200) {
let blob = this.response;
let a = document.createElement("a");
let url = window.URL.createObjectURL(blob);
a.href = url;
a.download = "example.pdf";
a.click();
window.URL.revokeObjectURL(url);
}
};
xhr.send();
```
以上代码中,我们通过 AJAX 发送 GET 请求,将响应类型设置为 blob,然后在 onload 回调函数中创建一个 a 标签,设置 href 属性为下载链接,download 属性为文件名,最后通过 a.click() 来触发下载。
阅读全文