Laravel图像上传不起作用

时间:2017-04-04 17:08:34

标签: laravel laravel-5 intervention

我正在开发一个简单的CMS,我在图片上传方面遇到问题,因为它只刷新了创建/编辑页面,而不是上传图像。它在我注释掉图像部分时起作用。

这是我的代码:

public function create()
{
    $packages = Package::all();

    return view('packages.create')->withPackages($packages);
}

/**
 * Store a newly created resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function store(Request $request)
{
    $this->validate($request, array(

        'title'     =>  'required|max:30',
        'content'   =>  'required|max:255',
        'price'     =>  'required|max:15',
        'icon'      =>  'required|image'

    ));

    $package = new Package;

    $package->title = $request->title;
    $package->content = $request->content;
    $package->price = $request->price;

    if ($request->hasFile('icon')){
        $image = $request->file('icon');
        $filename = time() . '.' . $image->getClientOriginalExtension();
        $location = public_path('img/' . $filename);
        Image::make($image)->resize(300,300)->save($location);

        $package->image = $filename;
    }

    $package->save();

    return redirect()->route('packages.index');
}

/**
 * Display the specified resource.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function show($id)
{
    //
}

/**
 * Show the form for editing the specified resource.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function edit($id)
{
    $package = Package::find($id);
    return view('packages.edit')->withPackage($package);
}

/**
 * Update the specified resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function update(Request $request, $id)
{
     $this->validate($request, array(

        'title'     =>  'required|max:30',
        'content'   =>  'required|max:255',
        'price'     =>  'required|max:15',
        'icon'      =>  'required|image'

    ));

    $package = Package::find($id);

    $package->title = $request->title;
    $package->content = $request->content;
    $package->price = $request->price;

    if ($request->hasFile('icon')){
    //Add new photo
        $image = $request->file('icon');
        $filename = time() . '.' . $image->getClientOriginalExtension();
        $location = public_path('img/' . $filename);
        Image::make($image)->resize(300,300)->save($location);

        $oldFilename = $package->image;
    //Update DB
        $package->image = $filename;

     //Delete the old photo
        Storage::delete($oldFilename);
    }

    $package->save();

     //Set flash data with success message
    Session::flash('success', 'Pakkeløsningen blev opdateret!');

    // Redirect with flash data to posts.show
    return redirect()->route('packages.index'); 
}

这是我对PackageController

的create.blade.php
        {!! Form::open(['route' => 'packages.store']) !!}

            {{ Form::label('title', 'Titel:') }}
            {{ Form::text('title', null, array('class'=>'form-control', 'required' => '', 'maxlength' => '255')) }}

            {{ Form::label('content', 'Indhold:') }}
            {{ Form::text('content', null, array('class'=>'form-control', 'required' => '',  'maxlength' => '255')) }}

            {{ Form::label('price', 'Pris:') }}
            {{ Form::text('price', null, array('class'=>'form-control')) }}

            {{ Form::label('icon', 'Vælg ikon') }}
            {{ Form::file('icon') }}

            {{ Form::submit('Lav pakkeløsning!!', array('class' => 'btn btn-success btn-lg btn-block','style' => 'margin-top:20px;')) }}

        {!! Form::close() !!}

Aaaand我的路线,以防我遗失的地方

Route::resource('packages', 'PackageController');

我的提供者和别名中有干预图像,我确实在m控制器中将它们命名为:

namespace App\Http\Controllers;
use App\Package;
use Session;
use Image;
use Storage;

提前致谢!我希望我不会因为愚蠢的初学者问题而烦扰任何人:)

1 个答案:

答案 0 :(得分:1)

您缺少enctype属性。

修改{!! Form::open(['route' => 'packages.store', 'enctype' => 'multipart/form-data']) !!} 表格,如下所示

TypeError: this.adapter.clients is not a function
at Namespace.clients (/Users/oteng/.nvm/versions/node/v4.6.0/lib/node_modules/sails/node_modules/sails-hook-sockets/node_modules/socket.io/lib/namespace.js:253:16)
at Object.addRoomMembersToRooms (/Users/oteng/.nvm/versions/node/v4.6.0/lib/node_modules/sails/node_modules/sails-hook-sockets/lib/sails.sockets/add-room-members-to-rooms.js:50:42)
at introduce (/Users/oteng/.nvm/versions/node/v4.6.0/lib/node_modules/sails/lib/hooks/pubsub/index.js:1342:23)
at wrapper [as introduce] (/Users/oteng/.nvm/versions/node/v4.6.0/lib/node_modules/sails/node_modules/lodash/index.js:3095:19)
at publishCreateSingle (/Users/oteng/.nvm/versions/node/v4.6.0/lib/node_modules/sails/lib/hooks/pubsub/index.js:1237:16)
at /Users/oteng/.nvm/versions/node/v4.6.0/lib/node_modules/sails/lib/hooks/pubsub/index.js:1069:16
at arrayEach (/Users/oteng/.nvm/versions/node/v4.6.0/lib/node_modules/sails/node_modules/lodash/index.js:1289:13)
at Function.<anonymous> (/Users/oteng/.nvm/versions/node/v4.6.0/lib/node_modules/sails/node_modules/lodash/index.js:3345:13)
at publishCreate (/Users/oteng/.nvm/versions/node/v4.6.0/lib/node_modules/sails/lib/hooks/pubsub/index.js:1068:11)
at wrapper [as publishCreate] (/Users/oteng/.nvm/versions/node/v4.6.0/lib/node_modules/sails/node_modules/lodash/index.js:3095:19)