【发布时间】:2019-07-07 07:25:02
【问题描述】:
我在 Laravel 5 的这个目录中存储了一个 .csv 文件:
/storage/app/data.csv
在这个函数内部,我试图读取这个文件的内容并从中提取一些列,比如名称和城市到一个数组,示例代码:
use Illuminate\Support\Facades\Storage;
public function get_data() {
$file_n = Storage::url('data.csv');
$file = fopen($file_n, "r");
$all_data = array();
while ( ($data = fgetcsv($file, 200, ",")) !==FALSE {
$name = $data[0];
$city = $data[1];
$all_data = $name. " ".$city;
array_push($array, $all_data);
}
fclose($file);
}
我在控制器中得到一个 ErrorException:
fopen(/storage/data.csv): failed to open stream: No such file or directory
但是文件在那里。有没有更好的方法来代替?
感谢收看!
【问题讨论】:
-
试试
storage_path('data.csv')。 -
/storage/app/data.csv!=/storage/data.csv -
如果您需要为此使用 Storage 类,特别是如果您使用 s3 或 minio,请尝试
\Storage::disk('local_temp')->getDriver()->getAdapter()->applyPathPrefix($this->fileName);获取完整文件路径。这是 Laravel 5.1 的解决方案,对于 Laravel 5.2 及更高版本,::url()函数可以工作。对于 Laravel 5.7 及更高版本,::path()函数将起作用。