Laravel 8 图片上传验证

如何使用Laravel 8框架自带的验证图片上传验证

使用框架的自带的验证其实不难 话不多说 直接上代码

public function Uploads(Request $request)
    {
        //接收用户头像
        $validator = Validator::make($request->file(),[
            'file' => 'file|max:1000|mimes:jpeg,png',
        ],[
            //验证是否为文件
            'file.file' => '请确认你的头像格式',
            //验证文件上传大小
            'file.max' => '头像最大上传大小为1M',
            //验证上传文件格式
            'file.mimes' => '请确认上传为jpg或jpeg的格式图片',
        ]);
        if ($validator->fails()) {//如果有错误
            return ['error'=>$validator->errors()]; //返回得到错误
        }
        $file=$request->file('file')->store('','uploads');
            $path="http://www.holiday.com/api/uploads".$file;
            if ($path){
            return (['code'=>200,'msg'=>'上传成功','file'=>$path]);
            }
            else{
                return (['code'=>404,'msg'=>'未找到资源','data'=>'']);
            }
        }

以上代码内容转载于: 四个 Laravel 图片验证规则
.

规则 1. image

验证上传规则是否为image格式

public function rules()
{
    return [
        'uploaded_photo' => 'image',
    ];
}

最常见的问题可能是 什么是图像 ?

文档说明:验证中的文件必须是图像 (jpeg、png、bmp、gif 或 svg)

规则 2. mimes

如果您觉得上面列出的图像扩展名太多了,您可以将它们限制为特定的 JPG / PNG,例如:

public function rules()
{
    return [
        'photo' => 'mimes:jpeg,png',
    ];
}

可以使用上面的方式简化验证,即使您只需要指定扩展名,这个规则实际上是通过读取文件的内容并猜测其 MIME 类型来验证文件的 MIME 类型。这就是为什么 jpeg 对于 MIME 类型 image/jpeg 进行验证就足够了,其中还包括 .jpg 扩展名。

在此处了解更多关于 MIME 类型的信息。

规则 3. 大小

该规则很有趣,因为它适用于字符串和文件字段。如果是字符串,则以字符为单位验证长度,但是如果是上传的文件,则以文件大小 (以千字节为单位) 进行验证。

public function rules()
{
    return [
        'photo' => 'image|size:1024', // 1 MB
    ];
}

规则 4. 尺寸

还有更具体的验证,您可以限制图像的最小 / 最大宽度 / 高度。

public function rules()
{
    return [
        'photo' => 'dimensions:min_width=100,min_height=100,max_width=1000,max_height=1000', 
    ];
}

不仅如此,您还可以指定一个比率,例如 3/2,它将覆盖 600×400 和 300×200 等:

public function rules()
{
    return [
        'photo' => 'dimensions:ratio=3/2', 
    ];
}

最后,你甚至可以结合使用 width + height + ratio,这会稍微复杂一些:

use Illuminate.alidation.ule;

Validator::make($data, [
    'avatar' => [
        'required',
        Rule::dimensions()->maxWidth(1000)->ratio(3/2),
    ],
]);

因此,这是四个易于应用的规则。在 官方文档 中可以找到更多验证规则

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
Laravel中上传图片并回显,你可以按照以下步骤进行操作: 1. 在表单中添加文件上传字段: ```html <form method="POST" action="/upload" enctype="multipart/form-data"> @csrf <input type="file" name="image"> <button type="submit">上传图片</button> </form> ``` 2. 在路由中定义上传图片的处理逻辑: ```php use Illuminate\Http\Request; Route::post('/upload', function (Request $request) { if ($request->hasFile('image')) { $path = $request->file('image')->store('public/images'); // 存储的路径为 "storage/images/filename" // 如果你想要访问图片,可以将路径存储到数据库,并使用 Storage::url() 获取完整路径 // 也可以直接拼接 URL,例如:$url = '/storage/images/' . $request->file('image')->hashName(); return redirect()->back()->with('success', '图片上传成功'); } return redirect()->back()->with('error', '请选择要上传的图片'); }); ``` 3. 在视图中回显上传的图片: ```html @if(session('success')) <div class="alert alert-success">{{ session('success') }}</div> @endif @if(session('error')) <div class="alert alert-danger">{{ session('error') }}</div> @endif @if(isset($url)) <img src="{{ $url }}" alt="Uploaded Image"> @endif ``` 上述代码中,`$url` 是存储图片路径的变量,可以在控制器中把它传递给视图。使用`$url`作为图片的`src`属性值,图片就会回显在页面上。 请确保在进行文件上传时,已经配置好了Laravel的文件存储系统,并且有合适的权限以保存和访问上传的图片。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值