2017-11-06 2 views
0

-Controller für die Anzeige mit dem Hochladen undImportdatei Bewertung vor maatwebsite Excel in Laravel

public function show(Request $request){ 
    $location=$request->file('import_file'); 
    if($request->hasFile('import_file')){ 
     $data = Excel::selectSheets('Sheet1')->load($request->file('import_file'))->noHeading()->toArray(); 
     $result = array(
      'data'   =>$data, 
      'page_header' =>'Review Uploaded file', 
      'location'  =>$location, 
    ); 
    } 
      return view('admin.floorsheet.list', compact('result')); 

} 

Hier importieren habe ich den Speicherort der Datei erhalten, aber es nur temporären Speicherort statt ursprünglichen Dateipfad greifen.

public function store(Request $request) 
{ 
    if($request->hasFile('import_file')){ 
     Excel::load($request->file('import_file')->getRealPath(), function ($reader) { 
      foreach ($reader->noHeading()->first()->toArray() as $key => $row) { 
       $data['transaction'] = $row[1]; 
       $data['symbol'] = $row[2]; 
       $data['buyer'] = $row[3]; 
       $data['seller'] = $row[4]; 
       $data['quantity'] = $row[5]; 
       $data['rate'] = $row[6]; 
       $data['amount'] = $row[7]; 


       if(!empty($data)) { 
        DB::table('tbl_floorsheet')->insert($data); 


       } 
      } 
     }); 
    } 

    $result = array(

      'page_header' =>'File Uploaded', 
      'date'   =>date('Y-m-d'), 
    ); 
      return view('admin.floorsheet.import',compact('result')); 
} 

Meine Index Seite

<form class="form-horizontal" method="POST" action="{{ route('/my-admin/floorsheet.show') }}" enctype="multipart/form-data"> 
      {{ csrf_field() }} 
      <div class="col-lg-9 col-md-9 col-sm-12 col-xs-12"> 
       <div class="form-group"> 
        <label for="file">Upload Filer</label> 
        <input type="file" class="form-control" name="import_file" > 

        <label for="acceptdate">Date</label> 
         <input type="text" class="form-control" id="operationdate" name="operationdate" value="{{ $result['date'] }}"> 

             </div> 
      </div> 
      <div class="clearfix"></div> 

      <div class="clearfix"></div> 
      <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12"> 
       <div class="form-group"> 
        <button type="submit" class="btn btn-success">Upload File</button> 
        <button type="reset" class="btn btn-danger">Reset</button> 
       </div> 
      </div> 
     </form> 

Meine Liste Seite

<form class="form-horizontal" method="POST" action="{{ route('floorsheet.store') }}" enctype="multipart/form-data"> 
      {{ csrf_field() }} 
      <div class="col-lg-9 col-md-9 col-sm-12 col-xs-12"> 
       <div class="form-group"> 

        <label for="file">Upload Filer</label> 
        <input type="file" class="form-control" name="import_file" value="{{$result['location']}}"> 


        </div> 

        <table class="table table-hover table-responsive table-condensed" > 
          <tr> 
           <th>S.No</th> 
           <th>Transcation No.</th> 
           <th>Symbol</th> 
           <th>Buyer</th> 
           <th>Seller</th> 
           <th>Quantity</th> 
           <th>Rate</th> 
           <th>Amount</th> 

          </tr> 

          @foreach($result['data'] as $d) 
           <tr> 
          @foreach($d as $v) 
          <td>{{$v}}</td> 
           @endforeach 
           </tr> 
           @endforeach 
        </table> 
      </div> 
      <div class="clearfix"></div> 

      <div class="clearfix"></div> 
      <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12"> 
       <div class="form-group"> 
        <button type="submit" class="btn btn-success">Upload File</button> 
        <button type="reset" class="btn btn-danger">Reset</button> 
       </div> 
      </div> 
     </form> 

Hier habe ich in der Tabelle der Excel-Datei erfolgreich in Sicht Seite gezeigt haben. Aber während ich die Datei über die Ansichtsseite hochlade, muss ich die Datei erneut durchsuchen. Jetzt muss ich die Datei hochladen, ohne erneut zu browsen. Wenn ich den Wert auf der Ansichtsseite verwende, wird nur der temporäre Dateipfad anstelle des ursprünglichen Dateipfads verwendet.

Antwort

0

So haben Sie

$location = $request->file('import_file');

und den ursprünglichen Dateinamen zu holen:

$location->getClientOriginalName();

, für die Sie benötigen einen Pfad hinzufügen zu speichern:

$destinationPath = storage_path() .'/uploads'; $destinationName = date("YmdHis") .'_'. $location->getClientOriginalName(); $destinationFQN = "$destinationPath/$destinationName";

Sie können den Namen für eine Weile erinnern, wenn Sie es in einer Sitzung gestellt:

session()->put('filename', $location->getClientOriginalName()); $value = session()->get('filename'); session()->forget('filename');

Verwandte Themen