web-dev-qa-db-ja.com

Laravel 5フォルダー構造のどこにファイルを保存しますか?

Laravelプロジェクトがあり、いくつかの計算を行った後にファイル(txtまたはcsv)を保存します。

これらのファイルを保存する場所のベストプラクティスを探しています。たぶん/ resources/csv/...?

2番目の質問は、クラス内からこのパスを参照する最良の方法はどれでしょうか。 .envファイルにabsパスを設定しますか?リソースへのパスを返すlaravelメソッドはありますか?

12
koalaok

/ resourcesは最適な場所ではありません。このフォルダーはソースファイルに使用され、通常はソースコードリポジトリ(例:git)に保存されます。

アプリケーションが生成するファイルは通常/ storageフォルダーのどこかに移動します-そこに/ storage/csvフォルダーを作成するだけです。

これらのファイルをクラスから直接参照しないでください。 Laravelのファイルシステムはあなたが必要とするものです-それらの詳細はここで読むことができます: http://laravel.com/docs/master/filesystem 。これらは、ファイルの操作(の読み取り、書き込み、先頭に追加、削除、移動、すべてのファイルの取得など)をはるかに簡単にします。 。

config/filesystems.phpでファイルシステムを定義することから始めます

'disks' => [
  'csv' => [
    'driver' => 'local',
    'root'   => storage_path().'/csv',
  ],
],

これで、次のようなコードの任意の場所からStorageファサードを介してcsvファイルを読み書きできます。

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

保存フォルダにファイルを保存できます。

例えば:

ストレージフォルダーにcsvという名前のフォルダーを作成し、次のようにパスを取得できます。

storage_path().'/csv';

ストレージフォルダは次の場所にあります

Laravel 4.2:app> storage
Laravel 5+:ルートディレクトリ

4
Hasan Tareque
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();

    }
0
Rubén Ruíz