2016-09-30 93 views
2

當我嘗試上傳laravel 5中的大文件時,出現令牌不匹配錯誤。我在表單中使用了令牌字段。上傳大文件時的tokenmismatchexception laravel 5

TokenMismatchException in VerifyCsrfToken.php line 53: 

我已經嘗試過幾種方法:

  1. 增加的upload_max_filesize和post_max_size要。
  2. 更改php.ini文件並重新啓動apache服務。
  3. 禁用該路由的csrf中間件,但在這種情況下不會獲取該文件!

這是我的觀點:

<form id="csvform22345" role="form" class="form-horizontal" enctype="multipart/form-data" method="POST" action="{{ URL::to('admin/QC/uploadtomaindbcsv') }}"> 
    {!! Form::token() !!} 
    {{--<input type="hidden" name="_token" value="{{ csrf_token() }}">--}} 
    <input type="hidden" name="pid" value="{{ $pid }}"> 
            <div class="row"> 
             <div class="col-sm-8"> 
              <label class="control-label">Select File</label> 
              <input id="csvfile2" type="file" name="file2" required class="file-loading"> 
             </div> 
             <div class="col-sm-4"> 
              <div class="alert alert-info small mar-top">Only .csv files allowed.</div> 
             </div> 
            </div> 
           </form> 

控制器功能:

public function upload_to_maindb() 
{ 
    try 
    { 
    ini_set('upload_max_filesize', '2G'); 
    ini_set('post_max_size', '4G'); 
    ini_set('max_execution_time', '5000000'); 
    ini_set('max_input_time', '5000000'); 
    ini_set('memory_limit', '200M'); 
    //echo "try block" ; die; 
    $now = new DateTime(); 

    $timestamp = $now->format('Y-m-d H:i:s'); 
    $pid = Input::get('pid'); 
    $file = Input::file('file2'); 
     $project = Projects::select('project_type')->where('project_id',$pid)->get()->first(); 
     $pt = $project->project_type; 
    if($file !='') { 
     $pid = Input::get('pid'); 
     $fp = fopen($file, 'r'); 
     //echo "its here"; 
     //die; 
     $datas = array(); 
     unset($datas); 

     while (($row = fgetcsv($fp)) !== FALSE) { 
      $contact['company_name'] = $row[0]; 
      $contact['website'] = $row[1]; 
      $contact['contact_name'] = $row[2]; 
      $contact['first_name'] = $row[3]; 
      $contact['last_name'] = $row[4]; 
      $contact['email'] = $row[5]; 
      $contact['title'] = $row[6]; 
      $contact['address'] = $row[7]; 
      $contact['city'] = $row[8]; 
      $contact['state'] = $row[9]; 
      $contact['zip_code'] = $row[10]; 
      $contact['country'] = $row[11]; 
      $contact['phone_number'] = $row[12]; 
      $contact['fax_number'] = $row[13]; 
      $contact['industry'] = $row[14]; 
      $contact['sub_industry'] = $row[15]; 
      $contact['revenue'] = $row[16]; 
      $contact['employees'] = $row[17]; 
      $contact['data_category'] = $pt; 
      /* 
      $contact['sic_code'] = $row[18]; 
      $contact['naics_code'] = $row[19]; 
      $contact['linkedin_source'] = $row[20]; 
      */ 
      $contact['last_updated_via_project_id'] = $pid; 
      $datas[] = $contact; 
     } 
     foreach (array_chunk($datas, 200) as $data) { 
      Master_datarecords::insertIgnore($data); 
     } 
    } 
    unset($datas); 
    //echo "done"; die; 
     $msg= "successfully inserted"; 
    } 
    catch(\Exception $e) 
     { 
      $msg = "some error occured, please check the file."; 
     } 

    $approved_projects= array(); 
    $pids= array(); 
    $i=0; 
    $projstat = ProjectuserHelpers::GetProjectStatusId("approved"); 
    $projects_object=Projects::where('project_status',$projstat)->get(); 
    if(!($projects_object->isEmpty())) { 
     $projects = $projects_object->toArray(); 
     foreach ($projects as $val) { 
      $approved_projects[$i]['pid'] = $val['project_id']; 
      $approved_projects[$i]['projectname'] = $val['project_name']; 
      $approved_projects[$i]['record_count'] = Transitional_records::where('fk_project_id', $val['project_id'])->count(); 
      $i++; 
     } 
    } 
    return View::make('admin/home_page/QC/QCtomaindb',compact('approved_projects','msg')); 
} 

我無法找到在互聯網上,除了這些東西。還有其他解決方案嗎?

+1

讓我知道文件的大小,並 –

+0

有提供您的視圖和控制器代碼你去@MayankPandey –

+0

你可以顯示你的會話配置嗎? –

回答

2

我發生這種情況是由於post_max_size的限制。

我把它增加了50M並且還增加了上傳文件的最大大小。

現在工作。

0

你進入文件php.ini。 找到這個:

max_execution_time和max_input_time。

編輯

max_input_time設置= 1440的max_execution_time = 1440

我嘗試和成功

相關問題