2017-10-18 8 views
1

Je suis en utilisant Laravel 5.4 et en essayant de télécharger des relevés bancaires qui sont au format xls, au serveur.fichier xls se stocké sous forme de dossier sur le téléchargement vers le serveur

fichier est téléchargé se sur le disque, mais au lieu de créer un fichier excel un répertoire avec un fichier txt à l'intérieur crée.

Ce fichier txt contient le contenu du fichier xls.

. 
├── 835e9d46-b43d-11e7-ad3c-847beb400c7ebank-statement.xls 
│   └── 0qaYUFrYBLfDupI5v1GlUBuU6aVA8ZQTKdCrR90o.txt 
└── bd4cb0fa-b43e-11e7-bdc8-847beb400c7ebank-statement.xls 
    └── 2h2Z5Fy6seJtxxxAsYitZwTfA48XIOIpnc7W58xP.txt 

Afficher le code de fichier

{{ Form::open(['route' => 'upload-statement', 'class' => 'form-horizontal', 'files' => true]) }} 
          {{ csrf_field() }} 



          <div class="form-group{{ $errors->has('statement_file') ? ' has-error' : '' }}"> 
           <label for="email" class="col-md-4 control-label">Chose statement file</label> 

           <div class="col-md-6"> 
            <input autocomplete="off" id="statement_file" type="file" class="form-control" name="statement_file" required autofocus > 

            @if ($errors->has('statement_file')) 
             <span class="help-block"> 
             <strong>{{ $errors->first('statement_file') }}</strong> 
            </span> 
            @endif 
           </div> 
          </div> 

          <div class="form-group{{ $errors->has('ga_code') ? ' has-error' : '' }}"> 
           <label for="password" class="col-md-4 control-label">GA Code</label> 

           <div class="col-md-6"> 
            <input id="ga_code" type="text" class="form-control" name="ga_code" required> 

            @if ($errors->has('ga_code')) 
             <span class="help-block"> 
             <strong>{{ $errors->first('ga_code') }}</strong> 
            </span> 
            @endif 
           </div> 
          </div> 
          <div class="form-group"> 
           <label class="control-label col-lg-4"></label> 
           <div class="col-lg-8"> 
            <button class="btn btn-primary" id="uploadbankfileid" name="uploadbankfileid">Upload File</button>          </div> 
          </div> 
         </form> 

code du contrôleur

$statementFile = request()->file('statement_file'); 


$newFileName = Uuid::uuid1() . "bank-statement." . $statementFile->getClientOriginalExtension(); 

$originalFileName = $statementFile->getClientOriginalName(); 


$path = $request->file('statement_file')->store(
      '/'.$newFileName, 'bank-statements',['mimeType'=>$statementFile->getClientMimeType(),'mime'=>$statementFile->getClientOriginalExtension()] 
     ); 
+0

Comment vous téléchargez le fichier et comment le créez-vous? –

+0

l'essayer avec guessClientExtension au lieu de getClientOriginalExtension –

+0

fait mais ne fonctionne pas – sumit

Répondre

0

dans le Doku il se:

« La méthode du magasin accepte le chemin où le fichier doit être stocké par rapport dans le répertoire racine configuré du système de fichiers.Ce chemin ne doit pas contenir de nom de fichier, car un ID unique ll sera automatiquement généré pour servir de nom de fichier. "

le premier paramètre ne sont que le dossier où il doit sauver

utiliser la fonction storeAs

storeAs(string $path, string $name, array|string $options = []) 
0

C'est ce qui a résolu mon problème

$statementFile = request()->file('statement_file'); 
$newFileName = Uuid::uuid1() . "-bank-statement." . $statementFile->getClientOriginalExtension(); 
$uplodedPath = $statementFile->storeAs("/", $newFileName, ['disk' => 'bank-statements']); 

méthode magasin de UploadedFile() prend juste deux arguments premier argument est le nom du répertoire dans lequel le fichier est destiné à être stocké, et deuxième argument String disk-name ou si array the ['disk' => 'disk-name' ] du dossier. méthode de magasin peut être utilisé pour les cas où nous n'avons pas besoin d'une convention de dénomination personnalisée pour les fichiers téléchargés.

UploadedFile :: storeAs() prend trois arguments, le second argument est le nom personnalisé pour le fichier généré, les premier et troisième arguments sont identiques aux premier et second arguments de la méthode UploadedFies :: store().