Gambar dari storage laravel tidak muncul

permisi kak saya mau tanya, saya upload file foto/gambar di laravel dengan storage , foto sudah tersimpan namun tersimpannya di 2 tempat yaitu public/storage/files dan di storage/app/public/files , ketika saya proses klik upload terdapat kesalah seperti ini <a href=' https://i.imgur.com/zVSeaRV.jpg '> https://i.imgur.com/zVSeaRV.jpg </a> , tetapi foto bisa tersimpan , lalu saya ingin tampilkan foto tersebut di foto profil namun tidak muncul seperti ini <a href=' https://i.imgur.com/ZzKSh4n.jpg '> https://i.imgur.com/ZzKSh4n.jpg </a> , untuk coding controller seperti ini

 public function update_profile(Request $request)
    {
        // $url = Storage::url('kaktus.png');

        $valid = Validator::make($request->all(), [
            // 'name' => 'required',
        ]);

        if ($valid->fails())
        {
            return redirect()->back()
                ->withErrors($valid)
                ->withInput();
        }else{
            $id = Auth::user()->id;
            $admin = Admin::find($id);
            $admin->name = $request->input('name');
            $file       = $request->file('avatar');

            $admin->name = $request->input('email');
            $admin->name = $request->input('password');
            $admin->name = $request->input('remember_token');
            $admin->name = $request->input('created_at');
            $admin->name = $request->input('upadated_at');

            // -------
            // $uploadedFile = $request->file('avatar');
            // $path = $uploadedFile->store('public/files');
            // $admin = Admin::create([
            //         'name' => $request->title ?? $uploadedFile->getClientOriginalName(),
            //         'avatar' => $path
            // ]);


            if(!empty($file)){
                $fileName   = date('YmdHis').''.$file->getClientOriginalName();
                 $uploadedFile = $request->file('avatar');
                $path = $uploadedFile->store('public/files');
                  $admin = Admin::create([
                    'name' => date('YmdHis').''.$file->getClientOriginalName(),
                    'email' => '',
                    'password' => '',
                    'remember_token' => '',
                    'created_at' =>'',
                    'updated_at' => '',
                // $fileName   = date('YmdHis').''.$file->getClientOriginalName(),

                    'avatar' => $path
            ]);

            }
            if($admin->save()){
                Session::flash('flash_message', 'profile berhasil di update');
                return redirect()->back();
            }
            else{
                $valid = "harap isian jangan kosong";
                return redirect()->back()
                    ->withErrors($valid)
                    ->withInput();
            }
        }
    }

untuk route seperti ini

Route::post('/admin/update_profile', 'admin\AdminController@update_profile');

untuk view nya di main.blade.php (profil atas )

<img src="	public/files/{{ Auth::user()->avatar }} " class="img-responsive img-circle user-photo" alt="User Profile Picture">

untuk di coding view di form update nya seperti ini :

<div class="profile-section">
					<h2 class="profile-heading">Profile Photo</h2>
					<div class="media">
						<div class="media-left">
							{{-- <img id="pic" src="{{ asset('assets/img/user/'.Auth::user()->avatar.'')}}" class="user-photo media-object" alt="User"> --}}
							<img id="pic" src="{{ asset('storage/app/public/files'.Auth::user()->avatar.'')}}" class="user-photo media-object" alt="User">
						</div>
						<div class="media-body">
							<p>Upload your photo.
								<br> <em>Image should be at least 140px x 140px</em></p>
							<button type="button" class="btn btn-default-dark" id="btn-upload-photo">Upload Photo</button>
							<input type="file" id="filePhoto" class="sr-only" name="avatar" onchange="loadFile(event)">
							{{-- new --}}
							{{-- <input type="file" id="filePhoto" class="sr-only" name="file" onchange="loadFile(event)"> --}}
						</div>
					</div>
				</div>

bagaimana agar foto bisa tampil ya kak? mohon pencerahannya kak

avatar yenimulya
@yenimulya

50 Kontribusi 2 Poin

Diperbarui 5 tahun yang lalu

Tanggapan

coba disertakan juga yang tersimpan di database itu apa? apakah sudah ada .jpg atau belum? mungkin bisa juga di inspect elemen biar tau kenapa tidak keluar foto nya

oya kak gambar terupload dan tersimpan di folder , namun di database tidak berubah kak ternyata, mohon solusinya kak, berarti controller saya harus di benahi seperti apa kak @ghonijee . mohon solusinya kak

7 Jawaban:

  1. Terakit error itu karena agan masukin data email pada field 'email' itu duplicate artinya email yang agan masukan itu sudah pernah diinput ke database sebelumnya
  2. Terkait memunculkan gambar

<pre> src="{!! asset('files/'.Auth::user()-&gt;avatar) !!}" </pre>

avatar kikimf
@kikimf

91 Kontribusi 78 Poin

Dipost 5 tahun yang lalu

Tanggapan

tetap tidak bisa gan ndak muncul gambarnya gan @kikimf

coba inspect element gan, terus lihat src nya jadinya kemana itu, copy src nya di tab baru, muncul ga gambar nya

udah di link blom ke public, klo blom di link dulu biar bisa diakses <pre> //link storage ke public php artisan storage:link </pre> semoga berhasil

avatar bosque
@bosque

187 Kontribusi 104 Poin

Dipost 5 tahun yang lalu

Tanggapan

sudah bang, sudah tak buat di artisan command nya bang, apakah penamaan file nya bang? atau codingan saya ada yang salah @bosque ?

saya asumsikan, kamu nyimpannya dibawah public/files/. untuk lengkapnya

file terupload di storage/app/public/files kak , sudah tak coba tadi pakai ini User Profile Picture tapi belum bisa @bosque

Halo, sperti kata @bosque, sy juga asumsikan file tersimpan di "storage\public\nama_folder\nama_file" atau "storage\public\nama_file"

<pre> //Apabila belum, lakukan perintah artisan berikut php artisan storage:link </pre> Pada bagian folder public akan dibuat shortcut folder "storage", lalu untuk menghubungkan dengan view ada berbagai cara (sy asumsikan, sperti penjelasan bahwa anda menggunakan folder "files")

  1. dengan "url" <pre> &lt;img src="{{ url('public/storage/files/' . Auth::user()-&gt;avatar) }}"&gt; </pre>
  2. dengan "asset"
  3. dengan "public_path"
  4. dengan "storage_path" Ane sampe saat ini lebih sering menggunakan cara nomor 1, dengan "url".

Untuk masalah file upload tersimpan di 2 tempat, tidak perlu khawatir, karena pada path "public/storage/files" merupakan shortcut dari "storage/app/public/files".

Apabila menggunakan storage, ada baiknya jika <a href='https://laravel.com/docs/5.7/filesystem'>https://laravel.com/docs/5.7/filesystem</a> dibaca untuk lebih jelasnya.

Smoga bisa membantu gan.

avatar zergz
@zergz

62 Kontribusi 47 Poin

Dipost 5 tahun yang lalu

Tanggapan

kak foto terupload dan tersimpan di folder storage/files , namun di database tidak berubah kak, mohon solusinya kak @zergz

kak foto terupload dan tersimpan di folder storage/files , namun di database tidak berubah kak (foto yang tersipan tidak bisa ter rename kak) mohon solusinya kak @zergz , ghonijee

avatar yenimulya
@yenimulya

50 Kontribusi 2 Poin

Dipost 5 tahun yang lalu

Ane asumsikan pertanyaan sbelumnya mengenai menampilkan gambar sdh berhasil. Sedangkan untuk pertanyaan mengenai upload, contoh (nama file dan controller hanya contoh saja, nanti tinggal disesuaikan)

<pre> namespace App\Http\Controllers;

use Carbon; use File; use Storage;

class NamaController extends Controller { public function update(Request $request) { $admin = Admin::findorFail(Auth::user()-&gt;id); if( $request-&gt;hasFile('avatar') ){ $file = $request-&gt;file('avatar'); $ext = $request-&gt;avatar-&gt;getClientOriginalExtension(); $filename = Carbon::now() . '.' . $ext; $place = 'public/files/' . $filename; Storage::put($place, File::get($file)); $admin-&gt;avatar = $filename; } $admin-&gt;save(); return redirect()-&gt;back(); } } </pre>

Smoga bisa membantu.

avatar zergz
@zergz

62 Kontribusi 47 Poin

Dipost 5 tahun yang lalu

Tanggapan

Carbon::now() itu apa ya kak? kok eror ditempat saya kak, oya sebenarnya file sudah tersimpan di folder storage/public/files , hanya di database tidak tersimpan, dan foto yang berhasil masuk difolder tsb tidak bisa di ganti nama, apakah controller untuk $filename saya kliru @zergz

kak @zergz sudah saya ganti seperti ini di controller nya

<pre> public function update_profile(Request $request) { // $url = Storage::url('kaktus.png');

    $valid = Validator::make($request-&amp;gt;all(), [
        // &#039;name&#039; =&amp;gt; &#039;required&#039;,
    ]);

    if ($valid-&amp;gt;fails())
    {
        return redirect()-&amp;gt;back()
            -&amp;gt;withErrors($valid)
            -&amp;gt;withInput();
    }else{ 
        $id = Auth::user()-&amp;gt;id;
        $admin = Admin::find($id);
        $admin-&amp;gt;name = $request-&amp;gt;input(&#039;name&#039;);
        $file       = $request-&amp;gt;file(&#039;avatar&#039;);


      
        if(!empty($file)){
            // $fileName   = date(&#039;YmdHis&#039;).&#039;&#039;.$file-&amp;gt;getClientOriginalName();
            //  $uploadedFile = $request-&amp;gt;file(&#039;avatar&#039;);
            // $path = $uploadedFile-&amp;gt;store(&#039;public/files&#039; . $fileName);
           
            $file = $request-&amp;gt;file(&#039;avatar&#039;);
            $ext = $request-&amp;gt;avatar-&amp;gt;getClientOriginalExtension();
            $filename = Carbon::now() . &#039;.&#039; . $ext;
            $place = &#039;public/files/&#039; . $filename;
            Storage::put($place, Admin::get($file));
            $admin-&amp;gt;avatar = $filename;
            // File::make($file)-&amp;gt;resize(800,600)-&amp;gt;save($path);
            // $file[&#039;avatar&#039;] = $fileName;

        }
        if($admin-&amp;gt;save()){
            Session::flash(&#039;flash_message&#039;, &#039;profile berhasil di update&#039;);
            return redirect()-&amp;gt;back();
        }
        else{
            $valid = &quot;harap isian jangan kosong&quot;;
            return redirect()-&amp;gt;back()
                -&amp;gt;withErrors($valid)
                -&amp;gt;withInput();
        }
    }  
}

</pre>

tetapi eror seperti ini <a href=' https://i.imgur.com/mWbzLWs.jpg '> https://i.imgur.com/mWbzLWs.jpg </a>

avatar yenimulya
@yenimulya

50 Kontribusi 2 Poin

Dipost 5 tahun yang lalu

  1. Carbon::now untuk menggantikan date('YmdHis') yang ada di controller kamu sbelumnya, fungsinys sama saja, untuk tanggal dan waktu. Untuk menjalankan Carbon, pada bagian atas, gunakan "Use Carbon;" atau bisa juga "\Carbon\Carbon::now()"
  2. Untuk error kamu <pre> // coba ubah $id = Auth::user()-&gt;id; $admin = Admin::find($id); // menjadi $admin = Admin::where('id', Auth::user()-&gt;id)-&gt;get(); // atau bisa juga $admin = Admin::where('id', Auth::user()-&gt;id)-&gt;first(); // atau $admin = Admin::findorFail($id); </pre>

Smoga bisa membantu.

avatar zergz
@zergz

62 Kontribusi 47 Poin

Dipost 5 tahun yang lalu

Login untuk ikut Jawaban