在哪里保存文件在Laravel 5文件夹结构


Where to save files in Laravel 5 folder structure?

我有我的Laravel项目,将保存文件(txt或csv)后进行一些计算。

我正在寻找保存这些文件的最佳实践。也许/资源/csv/……?

第二个问题,从类中引用这个路径的最佳方式是什么?在.env文件中设置abs路径?是否存在返回资源路径的laravel方法?

/resources不是最好的位置,因为这个文件夹用于源文件,并且通常存储在源代码存储库中(例如git)。

应用程序生成的文件通常在/storage文件夹的某个地方结束-只需在那里创建一个/storage/csv文件夹。

永远不要直接从类中引用这些文件。Laravel的文件系统是你所需要的——你可以在这里阅读更多关于它们的信息:http://laravel.com/docs/master/filesystem。它们使对文件的操作(如读、写、前置、追加、删除、移动、获取所有文件以及更多…)更加简单。

config/filesystems.php 中定义一个文件系统
'disks' => [
  'csv' => [
    'driver' => 'local',
    'root'   => storage_path().'/csv',
  ],
],

现在你可以通过Storage facade从代码中的任何地方读取/写入csv文件,就像这样:

Storage::disk('csv')->put('file.csv', $content);
$content = Storage::disk('csv')->get('file.csv');

您可以将文件保存在存储文件夹中。

例如:

您可以在存储文件夹中创建一个名为csv的文件夹,获取路径如下:

storage_path().'/csv';

您可以在

中找到存储文件夹

Laravel 4.2: app>storage
Laravel 5+:根目录

public function storePhotos($data, Request $request, $requirement)
{
    //setlocale(LC_ALL, 'en_US.UTF-8'); //for spanish names
    $fileUploaded = $request->file('someVarFormName');
    $folder = 'docs/';
    $destinationFolder = date("Y-m");
    $destinationFolderInServer = $folder.$destinationFolder;//.'/';
    //$rules = array('file' => 'required|mimes:png,gif,jpeg,txt,pdf,doc,docx,exel,exelx'); //'required|mimes:png,gif,jpeg,txt,pdf,doc'
    $validator = Validator::make(array('file' => $fileUploaded), $rules);
    if($validator->passes())
    {
        $originalFileName = $fileUploaded->getClientOriginalName();
        $fileName = pathinfo($originalFileName, PATHINFO_FILENAME);
        $fileExtension = strtolower(pathinfo($originalFileName, PATHINFO_EXTENSION));
        $linkFilenameTemp = strtolower(ToolText::createLink($fileName));
        $linkFilename = $linkFilenameTemp.'.'.$fileExtension;
        //get versioin number if filename exist
        $i = 1;
        while(file_exists($destinationFolderInServer.'/'.$linkFilename))
        {
            $linkFilename = $linkFilenameTemp.'('.$i.').'.$fileExtension;
            $i++;
        }

        //* quitar / si falla
        $upload_success = $fileUploaded->move($destinationFolderInServer, $linkFilename);
        $dbRegOfFile = NULL;
        if($requirement->have_file)
            $dbRegOfFile = new mdl_TramitesRequisitosFiles();
        else
            $dbRegOfFile = mdl_TramitesRequisitosFiles::where('requisito_id', $requirement->id)
            ->get();
        $dbRegOfFile->requisito_id = $data['requirementId'];
        $dbRegOfFile->publisher = $data['publisher'];
        $dbRegOfFile->publisher_entity = $data['publisher_entity'];
        $dbRegOfFile->nice_name = $fileName;
        $dbRegOfFile->link_file_name = $linkFilename;
        $dbRegOfFile->extension = $fileName;
        $dbRegOfFile->size = $fileUploaded->getClientSize();
        $dbRegOfFile->save();
    }