没有Laravel,我可以使用简单的代码按行读取文本文件:
$file = fopen("whatever/file.txt", "r") or exit("Unable to open file!");
while(!feof($file)) {
echo fgets($file). "<br>";
}
fclose($file);
使用Laravel,由于本地文件存储位置的原因,这个简单的事情变得势不可挡。
即我可以使用Storage::get('whatever/file.txt')
方法获取文件内容,但是如何获取文件然后循环读取呢?
我尝试使用File::get('whatever/file.txt')
方法,但收到错误消息:File does not exist at path
。
如何使用Laravel逐行从本地存储(非公共)读取文件?
答案 0 :(得分:2)
$files = ExamFile::where('exam',$code)->get();
foreach ($files as $file)
{
$content = fopen(Storage::path($file->url),'r');
while(!feof($content)){
$line = fgets($content);
echo $line."<br>";
}
fclose($content);
}
你可以这样使用它。它对我有用。
答案 1 :(得分:0)
希望这会有所帮助
File::get(storage_path('whatever/file.txt'));
答案 2 :(得分:0)
您可以这样获取文件:
$file = fopen(storage_path("whatever/file.txt"), "r");
这将导致类似于此的路径
'/var/www/storage/whatever/file.txt'
或'/var/www/foo/storage/whatever/file.txt'
(如果您要从同一服务器提供多个网站),这取决于您的设置,但是您可以从中了解要点。然后,您可以读取文件;
while(!feof($file)) {
echo fgets($file). "<br>";
}
fclose($file);
答案 3 :(得分:0)
您需要知道文件所在的位置。您还需要一条到达那里的道路。 例如,如果您的文件位于存储文件夹中,则可以
File::get(storage_path('whatever/test.txt'));
dd($contents);
答案 4 :(得分:0)
好困惑!
我的文件位于文件夹storage/app/whatever/file.txt
中,但是Laravel storage("whatever/file.txt")
方法将其识别为storage/whatever/file.txt
路径。
就像我之前说的那样,它令人不知所措,令人困惑。
所以fopen('storage/app/whatever/file.txt')
为我工作。