Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.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规则中获取上载文件的内容?_Php_Laravel_Laravel 5.5 - Fatal编程技术网

Php 如何在laravel规则中获取上载文件的内容?

Php 如何在laravel规则中获取上载文件的内容?,php,laravel,laravel-5.5,Php,Laravel,Laravel 5.5,我正在尝试为上传的文件执行一些自定义验证逻辑,因此我创建了一个规则,并开始编辑passes()方法。但是$value仅包含上载文件的基本名称 如何获取文件内容或上传文件的完整路径,以便验证内容 以下是使用artisan创建的标准样板规则: <?php namespace App\Rules; use Illuminate\Support\Facades\Storage; use Illuminate\Contracts\Validation\Rule; class MyFileVal

我正在尝试为上传的文件执行一些自定义验证逻辑,因此我创建了一个
规则
,并开始编辑
passes()
方法。但是
$value
仅包含上载文件的基本名称

如何获取文件内容或上传文件的完整路径,以便验证内容

以下是使用artisan创建的标准样板规则:

<?php

namespace App\Rules;

use Illuminate\Support\Facades\Storage;
use Illuminate\Contracts\Validation\Rule;

class MyFileValidation implements Rule
{
    /**
     * Create a new rule instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Determine if the validation rule passes.
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value)
    {
        // This is where I need the file contents
    }

    /**
     * Get the validation error message.
     *
     * @return string
     */
    public function message()
    {
        return 'The validation error message.';
    }
}

您可以通过全局帮助器访问
Reuqest
对象:

您还可以使用IoC注入
请求
对象:

$request = app('Illuminate\Http\Request');
$file = $request->file('some_file');

好吧,这是愚蠢的,但也许其他人将来也会有同样的问题,并发现这一点

我的问题是我忘了将
enctype=“multipart/form data”
添加到
元素,因此实际上发送到服务器的只是文件的基本名称。这就解释了为什么我在规则中只看到了这些


添加正确的enctype属性后,我得到了
illighted\Http\UploadedFile
的一个实例,作为规则中的
$value

request()->file($value)
passes()
方法中返回null。@LarsNyström使用输入元素名,而不是同样返回
null
$value
。@LarsNyström请显示
dd(request()->all())的展开结果哦,对不起,我刚刚意识到我忘记在我的表单中添加
enctype=“multipart/form data”
。。。现在我觉得自己很愚蠢。添加后,
$value
实际上是
illumb\Http\UploadedFile
的一个实例,我可以从中获得绝对路径。
$request = app('Illuminate\Http\Request');
$file = $request->file('some_file');