Storage::putFileAs 是否可以保存远程文件到本地磁盘
需要第三方服务器下PDF
文件,文件链接为https://sci.bban.top/pdf/10.3390/su9050682.pdf
,该链接可在浏览器中成功打开该文件。
代码如下:
$pdflink="https://sci.bban.top/pdf/10.3390/su9050682.pdf";
$folder_name="pdf\\";
$path=public_path() . '\\' . $folder_name;
$file= Storage::putFileAs($path,new File($pdflink),'1.pdf');
出现以下错误:
Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException
The file "https://sci.bban.top/pdf/10.3390/su9050682.pdf" does not exist
但使用copy()
可以下载,
copy("$pdflink", "G:/pdf/" . $title . ".pdf");
求教各位Storage::putFileAs
是否可以保存远程文件?还是代码哪里不对?先谢谢了!
同求:Storage::putFileAs 是否可以保存本地磁盘绝对路径到app空间目录,使用command方式不是http方式?
@Imuyu 你写这你试过么。。。
看下这个 github.com/barryvdh/laravel-dompdf...
谢谢你的回复。 试了一下,报错:
dd(Http::get($pdflink)->getBody());
得到以下输出。response 里面没有 pdf 对象。@fangmuke @Imuyu
Storage::put($filename, (new Client())->get($url, ['verify' => false])->getBody())
可以顺利保存远程 PDF。必须带上['verify' => false]
才行。这点没搞明白,@Imuyu 可否解释一下。感谢!另外有一个问题请教各位,关于文件路径的问题。成功保存 pdf 后,用
$file_path=Storage::path($file)
返回文件保存路径,得到的路径是:G:\laragon\www\sci2pdf\storage\app\pdfs/Economic analysis of a traceability system for a two level perishable food supply chain.pdf
为什么在返回路径中pdfs
之后就是/
,而不是\
? 带/
的路径在windo里面是错误的呀。 感谢大家!可能这个问题比较菜。@xumng 测试了以下几种方法:php原生的
copy()
方法,Laravel 的 Storage 提供的put
,putFileAs
,copy
方法,最快的是putFileAs
. 我之前看了文档写的是$file= Storage::putFileAs($path,new File($pdflink),'1.pdf');
不正确,正确的应该是:$file= Storage::putFileAs($path,$pdflink,'1.pdf');
,$path
是要保存pdf文件的路径,$pdflink
是要保存的目标PDF文件的链接。我的理解(不知道正不正确),用new File()
就变成要在$pdflink
给出的链接地址新建文件,所以报错The file "https://sci.bban.top/pdf/10.3390/su9050682.pdf" does not exist
,因为无法在别人的服务器上新建文件。如有没没理解对的地方,麻烦各位指正。感谢!我测试上面几种方法都没成功。。
最后我还是先保存本地了。。。
我试试,多谢!