web-dev-qa-db-fra.com

Où enregistrer les fichiers dans Laravel 5 structure de dossier?

J'ai mon projet Laravel qui enregistrera des fichiers (txt ou csv) après quelques calculs.

Je cherche une meilleure pratique pour enregistrer ces fichiers . Peut-être que/resources/csv/...?

Deuxième question: comment serait-il le meilleur moyen de référencer ce chemin depuis une classe? Configurer le chemin abs dans un fichier .env? Existe-t-il une méthode laravel qui renverra le chemin des ressources?

9
koalaok

/ resources ne constituent pas le meilleur emplacement, car ce dossier est utilisé pour les fichiers source et est généralement stocké dans le référentiel de code source (par exemple, git). 

Les fichiers générés par l’application se trouvent généralement dans le dossier/storage - il suffit de créer un dossier / storage/csv.

Vous ne devriez jamais référencer ces fichiers directement à partir de vos classes. Les systèmes de fichiers de Laravel sont ce dont vous avez besoin - vous pouvez en savoir plus à leur sujet ici: http://laravel.com/docs/master/filesystem . Ils facilitent grandement les opérations sur les fichiers (comme read, write, prepend, append, delete, move, get tous les fichiers et bien d’autres encore ...).

Commencez par définir un système de fichiers dans votre config/filesystems.php

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

Maintenant, vous pouvez lire/écrire vos fichiers csv via la façade Storage à partir de n’importe où dans votre code, comme ceci:

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

Vous pouvez enregistrer des fichiers dans un dossier de stockage. 

Par exemple: 

Vous pouvez créer un dossier nommé csv dans le dossier de stockage et obtenir le chemin comme suit:

storage_path().'/csv';

Vous pouvez trouver le dossier de stockage dans

Laravel 4.2: app> stockage
Laravel 5+: dans le répertoire racine

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