2016-01-04 65 views
0

我不擅长Laravel 5.1。我需要你的帮助......上传文件安全Laravel 5.1

为什么它会上传我的请求文件中不在列表中的其他文件?我想上传规则函数我的请求文件

这里是我的新的更新控制器

public function store(UploadFiles $filename) { 

    $input = Input::all(); 
    $rules = array('filename' => 'mimes:pdf,doc,jpeg,png,docx'); 
    $validator = Validator::make($input, $rules); 

    if($validator->fails()) { 
     $messages = $validator->messages(); 
     print_r($messages); 
    } else { 
     $file = $filename->file('filefield'); 
     $extension = $file->getClientOriginalExtension(); 
     $entry = new Fileentry(); 
     $entry->mime = $file->getClientMimeType(); 
     $entry->original_filename = $file->getClientOriginalName(); 
     $entry->filename = $file->getFilename().'.'.$extension; 
     $entry->description = Request::input('description'); 
     Storage::disk('local')->put($file->getFilename().'.'.$extension, File::get($file)); 
     $entry->user_id = Auth::user()->id; 
     return redirect('upload'); 
    }  
} 

我的要求:UploadFiles.php

public function authorize() { 
    return true; 
} 

/** 
* Get the validation rules that apply to the request. 
* 
* @return array 
*/ 
public function rules() { 
    return ['filename' => 'mimes:pdf,doc,jpeg,png,docx']; 
} 

这是我index.blade.php

<form action="{{route('addentry', [])}}" method="post" enctype="multipart/form-data"> 
    <input type="hidden" name="_token" value="{!! csrf_token() !!}"> 
    <input type="file" name="filefield" required> 
    <br> 

    Description <br> 
    <div class="form-group"> 
     <input type="textarea" name="description"><br> 
    </div> 
    <input type="submit"> 
</form> 

回答

1

您应该将您的规则arr传递给验证器。

你的代码应该是这样的:

$input = Input::all(); 
$rules = array('filename' => 'mimes:pdf,doc,jpeg,png,docx'); 
$validator = Validator::make($input, $rules); 

if ($validator->fails()) { 
    $messages = $validator->messages(); 
    print_r($messages); 
} else { 
    //your upload code here 
} 
+0

我该怎么做那位先生? – angel1108

+0

尝试检查验证程序是否像上面的示例一样失败,然后查看结果 –

+0

我试过这个先生,但没有发生任何事......它没有上传任何内容...... T___T – angel1108

1

试试这个:

在你的控制器,你上传的其中: 添加use App\Http\Requests\UploadFilesValidationRequest;和控制器,实现依赖注入,如:

public function store(UploadFilesValidationRequest $uploadValidator, UploadFiles $filename){ 

} 

OR

$imageValidator = new UploadFilesValidationRequest; 
$imageValidation = Validator::make($fileData,$imageValidator->rules()); 

if ($imageValidation->fails()){ 
    dd($imageValidation->messages()) 
} 

看,如果可行。

+0

我试过这个先生,但是我有一个错误。 T__T – angel1108

+0

您试过了哪个选项?第一或第二 –

+0

我已经尝试过这两个先生:) – angel1108