2017-08-26 3 views
0

J'ai un contrôleur de classe avec la méthode 2 (télécharger, séparé). le code fonctionne et n'a pas eu de problème. Ma question est de savoir comment implémenter le stockage de fichiers laravel dans ma méthode séparée, car dans ce cas, je lis et écris le fichier avec fopen et fwrite n'utilise pas Storage::GET et Storage::PUT.Mettre en œuvre pour le stockage de fichiers 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); 

     } 

} 

Répondre

0

Créer une fonction statique publique dans le contrôleur et ajoutez le code il y a donc à chaque fois il suffit d'appeler la fonction statique dans les méthodes de régulation. Notez que vous pouvez refactoring dans les méthodes aussi.

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