Laravel传PDF到JS变量方法分享
本文介绍了一种在Laravel项目中,将存储在服务器上的PDF文件路径传递到前端JavaScript代码中的方法。核心思想是将PDF文件的URL通过Controller传递到Blade模板,然后在Blade模板中使用JSON编码将URL存储为HTML元素的data属性,最后在JavaScript中读取并解析这些URL,从而实现PDF文件的动态展示。

在Laravel项目中,有时需要在前端JavaScript代码中使用服务器端存储的PDF文件。直接将PDF文件内容传递到前端可能效率较低。一种更有效的方法是将PDF文件的URL传递到前端,然后让前端根据URL请求PDF文件。本文将详细介绍如何实现这一过程。
1. Controller端处理
首先,需要在Controller中获取PDF文件的URL。假设PDF文件存储在test_docs磁盘中,并且是公开可访问的。
exists('testFirstFile.pdf')) {
// 假设文件是公开可访问的,使用 url 方法
$files[1] = Storage::disk('test_docs')->url('testFirstFile.pdf');
}
if (Storage::disk('test_docs')->exists('testSecondFile.pdf')) {
// 假设文件是公开可访问的,使用 url 方法
$files[2] = Storage::disk('test_docs')->url('testSecondFile.pdf');
}
return view('test.index', ['files' => $files]);
}
}这段代码首先检查文件是否存在,然后使用Storage::disk('test_docs')->url()方法获取PDF文件的URL。最后,将包含PDF文件URL的数组传递给test.index视图。
注意事项:
- 确保test_docs磁盘已正确配置,并且文件是公开可访问的。
- url()方法返回的是文件的完整URL,包括域名和路径。
2. Blade模板处理
在Blade模板中,需要将Controller传递过来的$files数组转换为JSON格式,并将其存储在HTML元素的data-属性中。
@section('loadjs')
@endsection这段代码首先创建一个元素,并将其id设置为filesdata。然后,使用json_encode($files)将$files数组转换为JSON字符串,并将其存储在data-files属性中。
在@section('loadjs')中,首先获取data-files属性的值,然后使用JSON.parse()将JSON字符串解析为JavaScript对象。现在,你可以在JavaScript代码中使用files变量来访问PDF文件的URL。
注意事项:
- 确保在@section('loadjs')中添加
