在Laravel 5文件夹结构中保存文件的位置?

时间:2015-08-14 08:00:48

标签: php file laravel laravel-5

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

我正在寻找保存这些文件的最佳做法。 也许/ resources / csv /...?

第二个问题如何从类中引用此路径的最佳方法? 在.env文件中设置abs路径? 是否有一个将返回资源路径的laravel方法?

3 个答案:

答案 0 :(得分:22)

/ resources 不是最佳位置,因为此文件夹用于源文件,通常存储在源代码存储库(例如git)中。

应用程序生成的文件通常最终位于/ storage文件夹中的某个位置 - 只需在那里创建一个 / storage / csv 文件夹。

您永远不应该直接从您的类中引用这些文件。 Laravel的文件系统是您所需要的 - 您可以在这里阅读更多相关信息:http://laravel.com/docs/master/filesystem。他们对文件进行操作(如读取,写入,前置,追加,删除,移动,获取所有文件等等)更简单。

首先在 config / filesystems.php

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

现在,您可以从代码中的任何位置通过存储外观读取/写入csv文件,如下所示:

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

答案 1 :(得分:4)

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

例如:

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

storage_path().'/csv';

您可以在

中找到存储文件夹

Laravel 4.2:app>存储
Laravel 5+:在根目录

答案 2 :(得分:0)

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();

    }