【问题标题】:Laravel and Intervention - How to disallow upload of big imagesLaravel 和干预 - 如何禁止上传大图像
【发布时间】:2019-01-07 23:16:08
【问题描述】:

我的 Laravel 应用上有这个上传控制器。 它允许上传

如何检测尺寸和分辨率并停止上传?

<?php namespace App\Http\Controllers;

use App\Http\Requests;
use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

use App;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Response;
use Illuminate\Support\Facades\File;


class UploadController extends Controller {


public function store()
    {

        $uploadedimage = array();

        $type      = Input::get('type');
        $table     = Input::get('table');
        $folder    = Input::get('folder');
        $extkey    = Input::get('extkey');
        $record    = Input::get('record');
        $tipo      = Input::get('tipo');
        $adduser   = Input::get('adduser');

        foreach (Input::file('image') as $image) {

            $oldname = $image->getClientOriginalName();
            $vowels = array("#", "@", "+", "à", "è", "é", "ì", "ò", "ù", ";", ",", "?", "*", '$', "!", "(", ")", "/", '"', "'", "%", "£", "<", ">", "&");
            $newname = str_replace($vowels, "", $oldname);

            $imagename = time()."-".$newname;
            $uploadflag = $image->move('repository/'.$folder, $imagename);

            if($uploadflag){
                $uploadedimage[] = $imagename;
            }

        }

        foreach ($uploadedimage as $value) {

            if($type == 1) {
                $tab = explode("|", $extkey);

                if($adduser == 1){
                DB::table($table)->insert(array(
                        $tab[1].'_id'      => $tab[0],
                        'active'           => 1,
                        'ordine'           => 100,
                        $record            => $value,
                        'user_id'          => Auth::id()
                    ));
                } else {
                    DB::table($table)->insert(array(
                        $tab[1].'_id'      => $tab[0],
                        'active'           => 1,
                        'ordine'           => 100,
                        $record            => $value
                    ));
                }
            } else {
                DB::table($table)->where('id', $extkey)->update(array($record => $value));
            }

        }

        return Response::json(['success' => 'true', 'images' => $uploadedimage ]);

    }

【问题讨论】:

标签: laravel validation image-uploading laravel-validation


【解决方案1】:

使用dimensions validation rule:

public function store(Request $request)
{
    $request->validate([
        'image' => 'dimensions:min_width=100,min_height=200',
    ]);
}

【讨论】:

  • 还有size 验证规则。
  • 好的,这通过将上传无效,有没有快速提醒用户的方法?
猜你喜欢
  • 2023-01-24
  • 1970-01-01
  • 2018-09-23
  • 1970-01-01
  • 1970-01-01
  • 2017-01-28
  • 2017-08-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多