Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Laravel 5.1中上载文件的安全性_Php_Mysql_Database_Laravel 5.1 - Fatal编程技术网

Php 在Laravel 5.1中上载文件的安全性

Php 在Laravel 5.1中上载文件的安全性,php,mysql,database,laravel-5.1,Php,Mysql,Database,Laravel 5.1,我不擅长拉威尔5.1。我需要你们的帮助,伙计们 为什么它要上传我的请求文件列表中没有的其他文件?我只想在我的请求文件上上传规则功能 这是我的新更新控制器 public function store(UploadFiles $filename) { $input = Input::all(); $rules = array('filename' => 'mimes:pdf,doc,jpeg,png,docx'); $validator = Validator::ma

我不擅长拉威尔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'];
}
<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>
这是我的index.blade.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'];
}
<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>


说明


您应该将规则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
}
试试这个:

在您的控制器中,您正在上载: 添加
使用App\Http\Requests\UploadFilesValidationRequest并在控制器中实现依赖项注入,如:

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

}

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

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

请看,如果这样做有效。

我该怎么做,先生?尝试检查验证程序是否像上面的示例那样失败,然后查看结果。我尝试过这个,先生,但没有发生任何事情……它没有上传任何内容。。。T_uuu_uuti已经在上面更新了我的控制器,先生…我不确定它是否正确:)您应该将验证器规则中的文件名更改为您的文件名:'filename'=>'mimes:pdf,doc,jpeg,png,docx',应该是'filefield'=>'mimes:pdf,doc,jpeg,png,docx',其中filefield是您的文件名