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

mr.*_*ris 4 php file laravel

如果没有 Laravel,我可以使用简单的代码逐行读取文本文件:

$file = fopen("whatever/file.txt", "r") or exit("Unable to open file!");

while(!feof($file)) {
   echo fgets($file). "<br>";
}

fclose($file);
Run Code Online (Sandbox Code Playgroud)

使用 Laravel,由于本地文件存储位置,这个简单的事情变得势不可挡。

即我可以使用Storage::get('whatever/file.txt')方法获取文件内容,但是如何只获取一个文件然后循环读取它?

我尝试使用File::get('whatever/file.txt')方法但得到一个错误:File does not exist at path

如何使用 Laravel 从本地存储(非公共)逐行读取文件?

Sas*_*vic 6

您可以像这样获取文件:

$file = fopen(storage_path("whatever/file.txt"), "r");
Run Code Online (Sandbox Code Playgroud)

这将产生与此类似的路径, '/var/www/storage/whatever/file.txt'或者'/var/www/foo/storage/whatever/file.txt'如果您从同一服务器为多个网站提供服务,这将取决于您的设置,但您已了解其要点。然后你就可以读取你的文件了;

while(!feof($file)) {
    echo fgets($file). "<br>";
}

fclose($file);
Run Code Online (Sandbox Code Playgroud)


Rag*_*ger 6

Laravel v 10.10 已确认工作!!

Illuminate\Support\Facades\File::lines(storage_path('app/whatever.txt'))->each(function ($line) {
   $this->info($line);
});
Run Code Online (Sandbox Code Playgroud)


小智 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);
    }
Run Code Online (Sandbox Code Playgroud)

你可以像这样使用它。这个对我有用。