[英]Implement to File Storage Laravel
我有2种方法(上载,单独)的类控制器。 该代码运行,没有任何问题。 我的问题是如何在单独的方法中实现laravel文件存储,因为在这种情况下,我使用fopen
读写文件,而fwrite
不使用Storage::GET
和Storage::PUT
。
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, 'root@CLA-0 [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);
}
}
在控制器中创建一个公共静态函数并在其中添加代码,因此每次只需在控制器方法中调用该静态函数即可。 注意,您也可以在方法中进行重构。
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, 'root@CLA-0 [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);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.