Laravel:图像上传的未定义值

时间:2017-03-01 17:32:56

标签: php laravel laravel-5 laravel-5.3

第一个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());
}

错误讯息:

  

InventoryController.php第28行中的ErrorException:未定义的变量:   请求

我做错了什么?

1 个答案:

答案 0 :(得分:1)

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

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

然后您可以在方法中使用$request

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

希望这有帮助!