2017-08-26 13 views
0

私は2つのメソッド(アップロード、分離)を持つクラスコントローラを持っています。コードの実行とdidntには何の問題もありません。私の質問は、この場合私はfopenfwriteStorage::GETStorage::PUTを使わないでファイルを読み書きするので、別の方法でlaravelファイルストレージを実装する方法です。ファイルストレージへの実装Laravel

class UploadController extends Controller 
{ 
    public function upload() 
    { 
     if(Input::hasFile('file')){ 
      $file = Input::file('file'); 
      $file->move('storage',$file->getClientOriginalName()); 
      $this->separate($file->getClientOriginalName()); 
      return view('layouts.pages.view_upload',['notice'=>$file->getClientOriginalName()." Uploaded"]);  
     } 
    } 

    public function separate($filename){ 

     $file_handle = fopen("../storage/app/public/WMLG2_2017_07_11.log", "r"); 

     //you 'll store your handles here 
     $targetHandles = []; 

     while (!feof($file_handle)) 
     { 
      $line = fgets($file_handle); 
      if (strpos($line, '[email protected] [WMLG2] >') !== false) 
      { 
       $namafileA = explode('> ', $line); 
       $namafile = str_replace(' ', '_', $namafileA[1]); 
       $filenameExtension = $namafile . ".txt"; 
       $file = preg_replace('/[^A-Za-z0-9\-_.]/', '', $filenameExtension); // hapus special character kecuali "." dan "_" 
      } 
      else 
      { 
       //no $file defined, most likely nothing to write yet 
       if (empty($file)) 
       { 
        continue; 
       } 

       //if its not open, we'll make them open 
       if (empty($targetHandles[$file])) 
       { 
       $targetHandles[$file] = fopen("../storage/app/public/show_command_file/$file", "a"); 
       } 
       //writing the line to target 
       fwrite($targetHandles[$file], $line); 
      } 
     } 

     //you should close your handles every time 
     foreach ($targetHandles as $handle) 
     { 
      fclose($handle); 
     } 

     fclose($file_handle); 

     } 

} 

答えて

0

コントローラーでパブリック静的関数を作成し、コントローラーメソッドで静的関数を呼び出すたびにコードを追加します。メソッドでリファクタリングを行うこともできます。

public function upload(){ 

    Static::uploadFile(); 

    return redirect(); //redirect somewhere 
} 

public function splitFile($filenane) 
{ 

$filename=request('file'); 

Static::separateFile($filename); 

return redirect(); //redirect somewhere 
} 




public static function uploadFile(){ 

if(Input::hasFile('file')){ 
      $file = Input::file('file'); 
      $file->move('storage',$file->getClientOriginalName()); 
      $this->separate($file->getClientOriginalName()); 
      return view('layouts.pages.view_upload',['notice'=>$file->getClientOriginalName()." Uploaded"]);  
     } 
} 

public static function separateFile($filename){ 

    $file_handle = fopen("../storage/app/public/WMLG2_2017_07_11.log", "r"); 

     //you 'll store your handles here 
     $targetHandles = []; 

     while (!feof($file_handle)) 
     { 
      $line = fgets($file_handle); 
      if (strpos($line, '[email protected] [WMLG2] >') !== false) 
      { 
       $namafileA = explode('> ', $line); 
       $namafile = str_replace(' ', '_', $namafileA[1]); 
       $filenameExtension = $namafile . ".txt"; 
       $file = preg_replace('/[^A-Za-z0-9\-_.]/', '', $filenameExtension); // hapus special character kecuali "." dan "_" 
      } 
      else 
      { 
       //no $file defined, most likely nothing to write yet 
       if (empty($file)) 
       { 
        continue; 
       } 

       //if its not open, we'll make them open 
       if (empty($targetHandles[$file])) 
       { 
       $targetHandles[$file] = fopen("../storage/app/public/show_command_file/$file", "a"); 
       } 
       //writing the line to target 
       fwrite($targetHandles[$file], $line); 
      } 
     } 

     //you should close your handles every time 
     foreach ($targetHandles as $handle) 
     { 
      fclose($handle); 
     } 

     fclose($file_handle); 
} 
関連する問題