簡體   English   中英

Laravel 4.2 Session :: put方法的問題

[英]Issue with Laravel 4.2 Session::put method

我有一種方法可以將文件存儲在會話中並上傳到目錄中,然后再從會話中獲取數據並保存在數據庫中。

我對此方法有疑問。 有時它可以正常工作,但在某些情況下,並非所有項目都保存在會話中。

我正在使用Laravel Session::put()方法將單獨的項目保存到會話數組中。 每次用戶更改表單上的某些輸入類型文件時,都會調用此方法。

例如,我有3個輸入類型文件。 有時,當我嘗試上傳文件時,它會保存insesion front_passport字段和address_document字段,但不會保存back_passport字段。

Laravel會話是否存在某種情況並以某種方式使用它?

我的代碼如下:

 $(".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()] )); } 

我的html是:

  <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> 

laravel會話具有生命周期,您可以從app / session.php對其進行配置。 但這不是事實-如果目錄中已存在文件,則刪除該文件。 我認為您不需要會話即可查找現有文件,只需使用php file_exists函數

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]]
    ));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM