2016-10-06 2 views
0

Ich habe eine Methode, die ich zum Speichern von Dateien in der Sitzung und zum Hochladen in Verzeichnis verwenden, danach bekomme ich Daten aus der Sitzung und in der Datenbank speichern.Problem mit Laravel 4.2 Sitzung :: put-Methode

Ich habe Probleme mit dieser Methode. Manchmal funktioniert es korrekt, aber es gibt Fälle, in denen nicht alle Elemente in der Sitzung gespeichert wurden.

Ich benutze Laravel Session::put() Methode, um separate Elemente in Session-Array zu speichern. Jedes Mal, wenn der Benutzer eine Eingabedateitypdatei im Formular ändert, wird diese Methode aufgerufen.

Zum Beispiel habe ich 3 Input-Typ-Dateien. Manchmal, wenn ich versuche, Dateien hochzuladen, speichert es das Feld front_passport Feld und address_document Feld, aber es speichert nicht back_passport Feld.

Gibt es einen Fall mit Laravel-Sitzung und in irgendeiner Weise zu verwenden?

Mein Code ist folgende:

$(".app-file").on('change', function(){ 
 
     var formData = new FormData(); 
 
     formData.append($(this).attr('name'), this.files[0]); 
 
     formData.append('name', $(this).attr('name')); 
 
     $.ajax({ 
 
      url: store_files, 
 
      type: "POST", 
 
      data: formData, 
 
      contentType: false, 
 
      processData: false, 
 
      success: function(response) { 
 
       if(response.errors) { 
 
        $.each(response.errors, function (k, v) { 
 
         $('[name=' + k + ']').parent().find('.file-name').html(''); 
 
         $('<label class="error file_error">' + v + '</label>').insertAfter($('[name=' + k + ']').next().next()); 
 
        }); 
 
       } 
 
      }, 
 
      error: function() { 
 
       $('.ajax-error').remove(); 
 
       $('<span class="error col-md-6 ajax-error">There is some error! Please try again later!</span>').insertAfter($('.upload-section h3')); 
 
      } 
 
     }); 
 

 
    });
public function storeFiles() { 
 
     $name = Input::get('name'); //input name 
 
     $input = Input::all(); 
 
     $input_file = Input::file($name); 
 
     $current_time = time(); 
 
     $allowed = array('jpeg','jpg','gif','png','pdf'); 
 
     
 
     $file_name = $current_time . '_' . $input_file->getClientOriginalName(); 
 
      $extension = File::extension($file_name); 
 

 
      if (!in_array($extension, $allowed)) { 
 
       return Response::json(array(
 
        'success' => false, 
 
        'errors' => [$name => 'Please provide an image with one of the following extensions : jpg, gif, png or pdf'] 
 
       )); 
 
      } 
 

 
      $current_session = Session::get($name); //delete existing image from directory 
 
      $item_path = APPLICATIONS_DIR.'/'.$current_session; 
 
      if (file_exists($item_path) && !empty($current_session)) { 
 
       $removed_file = unlink($item_path); 
 
      } 
 

 
      if ($input_file) { 
 
       $input_file->move(APPLICATIONS_DIR, $file_name); 
 
      } 
 
      Session::put($name, $file_name); 
 

 

 
     return Response::json(array(
 
      'files' => ['name' => $name,'session' => Session::all()] 
 
     )); 
 
     
 

 
}

Mein html ist:

<div class="form-group"> 
 
          <label for="front_passport" class="col-md-2 label-file">{{translate("Front ID/Passport")}}<span class="required-label">*</span></label> 
 
          <div class="col-md-8 file-wrapper"> 
 
           {{ Form::file('front_passport', ["class"=>"app-file"]) }} 
 
           <label for="front_passport" class="file-upload"><span>{{translate("Upload a File")}}</span></label> 
 
           <div class="file-name" data-input="front_passport"></div> 
 
           <label for="front_passport" generated="true" class="<?php echo $errors->has('front_passport') ? 'error' : '';?>">{{ $errors->first('front_passport') }}</label> 
 
          </div> 
 
         </div> 
 
         <div class="form-group"> 
 
          <label for="back_passport" class="col-md-2 label-file">{{translate("Back ID/Passport")}}<span class="required-label">*</span></label> 
 
          <div class="col-md-8 file-wrapper"> 
 
           {{ Form::file('back_passport', ["class"=>"app-file"]) }} 
 
           <label for="back_passport" class="file-upload"><span>{{translate("Upload a File")}}</span></label> 
 
           <div class="file-name" data-input="back_passport"></div> 
 
           <label for="back_passport" generated="true" class="<?php echo $errors->has('back_passport') ? 'error' : '';?>">{{ $errors->first('back_passport') }}</label> 
 
          </div> 
 
         </div> 
 
         <div class="form-group"> 
 
          <label for="address_document" class="col-md-2 label-file">{{translate("Proof of Address")}}<span class="required-label">*</span></label> 
 
          <div class="col-md-8 file-wrapper"> 
 
           {{ Form::file('address_document', ["class"=>"app-file"]) }} 
 
           <label for="address_document" class="file-upload"><span>{{translate("Upload a File")}}</span></label> 
 
           <div class="file-name" data-input="address_document"></div> 
 
           <label for="address_document" generated="true" class="<?php echo $errors->has('address_document') ? 'error' : '';?>">{{ $errors->first('address_document') }}</label> 
 
          </div> 
 
         </div>

Antwort

0

Die Laravel Sitzung eine Lebensdauer hat, ca Sie n Konfigurieren Sie es aus app/session.php. Aber das ist hier nicht der Fall - wenn Sie eine Datei löschen, wenn sie bereits im Verzeichnis vorhanden ist. Ich glaube nicht, dass Sie eine Sitzung benötigen, um die vorhandene Datei zu finden, verwenden Sie einfach php file_exists Funktion

public function storeFiles() { 
    $name = Input::get('name'); //input name 
    $input = Input::all(); 
    $input_file = Input::file($name); 
    $current_time = time(); 
    $allowed = array('jpeg', 'jpg', 'gif', 'png', 'pdf'); 

    $file_name = $current_time . '_' . $input_file->getClientOriginalName(); 
    $extension = File::extension($file_name); 

    if (!in_array($extension, $allowed)) { 
     return Response::json(array(
        'success' => false, 
        'errors' => [$name => 'Please provide an image with one of the following extensions : jpg, gif, png or pdf'] 
     )); 
    } 


    //delete existing image from directory 
    $item_path = APPLICATIONS_DIR . '/' . $file_name; 
    if (file_exists($item_path)) { 
     $removed_file = unlink($item_path); 
    } 

    if ($input_file) { 
     $input_file->move(APPLICATIONS_DIR, $file_name); 
    } 

    return Response::json(array(
       'files' => ['name' => $name, 'session' => [$name => $file_name]] 
    )); 
}