如果没有 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 从本地存储(非公共)逐行读取文件?
您可以像这样获取文件:
$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)
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)
你可以像这样使用它。这个对我有用。