Laravel 5.6如何逐行读取文本文件

时间:2018-10-26 11:51:09

标签: php laravel file

没有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逐行从本地存储(非公共)读取文件?

5 个答案:

答案 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')为我工作。