Laravel:图片上传时未定义值

Laravel: Undefined value on image upload

第一个 Laravel 项目。我构建了一个可以上传图像的功能。我所做的一切都是基于 this PDF(第 98-101 页)

我的blade.php

<?php echo Form::open(array('url' =>'/product/imgedit','files'=>'true'));
echo 'Adj meg egy új képet';
echo Form::file('image');
echo Form::submit('Upload File');
echo Form::close();?>

我的路由器

Route::get('product/{id}/imgedit', 'InventoryController@imgreq');
Route::post('product/imgedit', 'InventoryController@imgupl');

我的控制器:

public function imgreq($id)
{
    $product = DB::select('select * FROM inventory WHERE barcode = ?', [$id]);;

    return view('productimgupl', ['product' => $product]);
}

public function imgupl()
{
    $file = $request->file('image');
    //Display File Name
    echo 'File Name: ' . $file->getClientOriginalName();
    echo '<br>';
    //Display File Extension
    echo 'File Extension: ' . $file->getClientOriginalExtension();
    echo '<br>';
    //Display File Real Path
    echo 'File Real Path: ' . $file->getRealPath();
    echo '<br>';
    //Display File Size
    echo 'File Size: ' . $file->getSize();
    echo '<br>';
    //Display File Mime Type
    echo 'File Mime Type: ' . $file->getMimeType();
    //Move Uploaded File
    $destinationPath = '/media/productimg/';
    $file->move($destinationPath, $file->getClientOriginalName());
}

错误信息:

ErrorException in InventoryController.php line 28: Undefined variable: request

我做错了什么?

您需要在方法的参数中引入 Request 对象。像这样:

public function imgupl(Request $request) {
// code...
}

那么你可以在方法中使用$request

默认情况下,Laravel 在您使用 php artisan make:controller 时包含此 class,方法是将它插入控制器的顶部,并使用以下行:use Illuminate\Http\Request;。您所做的只是将 Request 对象转换为名为 $request 的变量,以便在该方法中使用。

希望对您有所帮助!