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