AngularJS 显示从 Spring @RestController 收到的 PDF (byte[])

作者:编程家 分类: angularjs 时间:2025-12-15

使用AngularJS显示从Spring @RestController收到的PDF (byte[])

在现代的Web应用程序中,我们经常需要处理和展示各种类型的文件,其中包括PDF文件。在这篇文章中,我们将介绍如何使用AngularJS来显示从Spring @RestController收到的PDF文件。

准备工作

首先,我们需要设置一个Spring @RestController来处理文件上传并返回PDF文件的字节数组。以下是一个简单的示例:

java

@RestController

public class FileController {

@GetMapping("/pdf")

public ResponseEntity getPdf() throws IOException {

// 从数据库或文件系统中获取PDF字节数组

byte[] pdfBytes = getPdfBytes();

HttpHeaders headers = new HttpHeaders();

headers.setContentType(MediaType.APPLICATION_PDF);

headers.setContentDispositionFormData("filename", "example.pdf");

return new ResponseEntity<>(pdfBytes, headers, HttpStatus.OK);

}

private byte[] getPdfBytes() throws IOException {

// 从数据库或文件系统中获取PDF字节数组的逻辑

// 这里仅作示例,实际应根据具体业务逻辑来获取字节数组

FileInputStream fileInputStream = new FileInputStream("path/to/example.pdf");

return fileInputStream.readAllBytes();

}

}

在上面的示例中,我们定义了一个`getPdf()`方法来获取PDF文件的字节数组,并使用`ResponseEntity`将其返回给客户端。我们还设置了适当的HTTP头来指示返回的内容类型为PDF。

使用AngularJS显示PDF

现在,让我们看看如何使用AngularJS来显示从Spring @RestController收到的PDF文件。首先,我们需要在HTML页面中包含AngularJS库:

html

在上面的示例中,我们使用了``标签来嵌入PDF文件,并使用`ng-src`指令来动态设置PDF文件的URL。我们将在控制器中定义该URL。

接下来,我们需要在AngularJS控制器中定义`pdfUrl`变量并使用`$http`服务从后端获取PDF文件的URL:

javascript

var app = angular.module("myApp", []);

app.controller("myCtrl", function($scope, $http) {

$http.get("/pdf", {responseType: 'arraybuffer'})

.then(function(response) {

var file = new Blob([response.data], {type: 'application/pdf'});

$scope.pdfUrl = URL.createObjectURL(file);

});

});

在上面的示例中,我们使用`$http.get()`方法来获取从Spring @RestController返回的PDF文件的字节数组。我们将`responseType`设置为`arraybuffer`,以便正确处理字节数组。然后,我们创建一个`Blob`对象,并使用`URL.createObjectURL()`方法来生成PDF文件的URL,并将其赋值给`pdfUrl`变量。

通过使用AngularJS和Spring @RestController,我们可以轻松地显示从后端收到的PDF文件。我们首先设置了一个Spring @RestController来处理文件上传并返回PDF文件的字节数组。然后,我们使用AngularJS来获取该字节数组并将其显示在HTML页面中。这种方法简单而有效,可以在现代Web应用程序中很好地处理和展示PDF文件。

希望本文对你有所帮助,谢谢阅读!