簡體   English   中英

Laravel 5.8 上傳圖片

[英]Laravel 5.8 uploading an image

我想在個人資料頁面上傳一張圖片。

我為個人資料頁面創建了 create.blade.php。

填空后,我想在 index.blade.php 中顯示每個信息,圖像,姓名,性別,國家,身體,描述。

現在我可以插入除圖像之外的所有數據。

我已經執行了 php artisan storage:link

因此,如果有人幫助我,我將不勝感激。

web.php

Route::prefix('user')->group(function(){
    Route::resource('profile', 'UserController');
});

遷移文件

Schema::create('profiles', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('user_id');
            $table->string('image');
            $table->string('name');
            $table->string('gender');
            $table->string('country');
            $table->string('bod');
            $table->string('description');
            $table->timestamps();
        });

create.blade.php

<div class="image-preview" id="imagePreview">
                @if(empty(Auth::user()->profile->image))
                <img src="{{asset('image/image1.jpg')}}" class="image-preview__image">
                @else
                <img src="{{asset('uploads/profile')}}/{{Auth::user()->profile->image}}" class="image-preview__image">
                @endif
        </div>

        <form action="{{ route('profile.store') }}" method="POST" enctype="multipart/form-data">
                @csrf
        <div class="preview">
                <input type="file" id="file" accept="image/*" name="image">
            <label for="file">
                Change Image
            </label>
        </div>
        <ul class="information">
            <li>Name :<br>
                <input type="text" class="name" name="name" required
                value="@if(!empty(Auth::user()->profile->name)){{ Auth::user()->profile->name }}@endif">
            </li><br>
            <li>Gender :<br>
                <div class="gender">
                    <select name="gender" id="" name="gender" >
                        <option class="option" value="@if(empty(Auth::user()->profile->gender))Select Gender
                                @else{{ Auth::user()->profile->gender }}@endif" selected="selected" required>
                                @if(empty(Auth::user()->profile->gender))Select Gender
                                @else{{ Auth::user()->profile->gender }}@endif
                        </option>
                        <option value="male" >male</option> 
                        <option value="female" class="selected">female</option> 
                        <option value="any">any</option> 
                    </select>       
                </div>
            </li>   
            <li>Country :<br>
                <div class="country">
                    <select name="country" id="" name="country" required>
                            <option class="option" value="@if(empty(Auth::user()->profile->country))Select country
                                    @else{{ Auth::user()->profile->country }}@endif" selected="selected">

                                    @if(empty(Auth::user()->profile->country))Select country
                                    @else{{ Auth::user()->profile->country }}@endif
                            </option>
                        <option value="United Kingdom">United Kingdom</option> 
                        <option value="United States">United States</option> 
                    </select>
                </div>    
            </li><br>
            <li>Birthday :<br>
                <input type="text" class="birthday" id="bod" name="bod" 
                value="@if(!empty(Auth::user()->profile->bod)){{ Auth::user()->profile->bod }}@endif">
            </li><br>
            <li>User Description :<br>
                <textarea name="description" id="" cols="60" rows="10">@if(!empty(Auth::user()->profile->description)){{ Auth::user()->profile->description }}@endif</textarea></li>
        </ul>
        <button type="submit" class="saveBtn">Save</button>
    </div>
</form>

UserController.php

public function store(Request $request) {
        $this->validate($request,[
            'image'=>'image|mimes:png, jpg, jpeg|max:20000'
        ]);

        $user_id = auth()->user()->id;
        if($request->hasfile('image')){
            $file = $request->file('image');
            $ext = $file->getClientOriginalExtension();
            $filename = time().'.'.$ext;
            $file->move('uploads/profile/', $filename);
            Profile::where('user_id',$user_id)->update([
                'image'=>$filename
            ]);
        }

        $validatedData = $request->validate([
            'name'=>'required',
            'gender'=>'required',
            'country' => 'required',
            'bod'=>'required|before:today'
        ]);

        $user_id = auth()->user()->id;
        Profile::updateOrCreate(
            ['user_id' => $user_id], // search requirements
            [   
                'name' => request('name'),
                'gender' => request('gender'),
                'country' => request('country'),
                'bod' => request('bod'),
                'description' => request('description')
            ]
        );
        return redirect()->route('profile.index')->with('profile', Profile::all());
    }

試試這個。不需要先分配這個,以后再存起來

Profile::updateOrCreate(
            ['user_id' => $user_id], // search requirements
            [   
                'name' => $request->name,

                'description' => $request->description,
                'image'=>$filename
            ]
        );

請更改您對 birhdate 的驗證。更新是您的問題。給出日期格式然后它會起作用

'bod'=>'date_format:Y-m-d|before:today'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM