laravel 如何使用带有公共链接路径参数的fopen()打开文件

0md85ypi  于 2023-05-19  发布在  其他
关注(0)|答案(1)|浏览(136)

我有一个Laravel项目。我需要生成的PDF模板的基础上的PDF文件多个。需要FPDI库中的setSourceFile(),并且必须使用具有读写权限的fopen()打开文件。我使用的模板文件存储在存储中,可以使用公共链接路径访问。

...
$link = Storage::url($file_path);
$input = url($link);
$stream = fopen($input, 'r+', false, stream_context_create());
// "http://127.0.0.1:8000/storage/files/template.pdf"
...

我确实喜欢这样,但是加载fopen()需要很长时间,它响应错误“超过最大请求时间”。如果我硬编码它使用系统路径,它的作品。如何在公共链接路径中使用fopen()

1bqhqjot

1bqhqjot1#

如果您使用的是公共磁盘,那么这些文件默认存储在storage/app/public中。然后,您可以使用php artisan storage:linkpublic/storage中创建一个符号链接,以使它们可以通过Internet访问。但是,要在您自己的应用程序中访问它们,没有必要(甚至不是一个好主意)通过URL访问它们。如果你不提供一个环回链接,那么请求将不得不在互联网上进行DNS名称解析,这会增加开销。此外,如果您使用的是php artisan serve,则一次只能满足一个请求,因此从现有请求中启动新请求将阻止满足新请求。
相反,您可以使用文档中指定的路径在本地访问文件,例如使用以下之一:

storage_path('files/template.pdf') 
// Or
public_path('storage/files/template.pdf')

相关问题