Postingan lainnya
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
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
8 Jawaban:
- 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
- Terkait memunculkan gambar
<pre> src="{!! asset('files/'.Auth::user()->avatar) !!}" </pre>
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
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 <img src="asset('storage/files/'.{{ Auth::user()->avatar)}}" />
file terupload di storage/app/public/files kak , sudah tak coba tadi pakai ini <img src="{{ asset('storage/files/'.Auth::user()->avatar )}} " class="img-responsive img-circle user-photo" alt="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")
- dengan "url" <pre> <img src="{{ url('public/storage/files/' . Auth::user()->avatar) }}"> </pre>
- dengan "asset"
- dengan "public_path"
- 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.
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
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()->id); if( $request->hasFile('avatar') ){ $file = $request->file('avatar'); $ext = $request->avatar->getClientOriginalExtension(); $filename = Carbon::now() . '.' . $ext; $place = 'public/files/' . $filename; Storage::put($place, File::get($file)); $admin->avatar = $filename; } $admin->save(); return redirect()->back(); } } </pre>
Smoga bisa membantu.
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-&gt;all(), [
// 'name' =&gt; 'required',
]);
if ($valid-&gt;fails())
{
return redirect()-&gt;back()
-&gt;withErrors($valid)
-&gt;withInput();
}else{
$id = Auth::user()-&gt;id;
$admin = Admin::find($id);
$admin-&gt;name = $request-&gt;input('name');
$file = $request-&gt;file('avatar');
if(!empty($file)){
// $fileName = date('YmdHis').''.$file-&gt;getClientOriginalName();
// $uploadedFile = $request-&gt;file('avatar');
// $path = $uploadedFile-&gt;store('public/files' . $fileName);
$file = $request-&gt;file('avatar');
$ext = $request-&gt;avatar-&gt;getClientOriginalExtension();
$filename = Carbon::now() . '.' . $ext;
$place = 'public/files/' . $filename;
Storage::put($place, Admin::get($file));
$admin-&gt;avatar = $filename;
// File::make($file)-&gt;resize(800,600)-&gt;save($path);
// $file['avatar'] = $fileName;
}
if($admin-&gt;save()){
Session::flash('flash_message', 'profile berhasil di update');
return redirect()-&gt;back();
}
else{
$valid = "harap isian jangan kosong";
return redirect()-&gt;back()
-&gt;withErrors($valid)
-&gt;withInput();
}
}
}
</pre>
tetapi eror seperti ini <a href=' https://i.imgur.com/mWbzLWs.jpg '> https://i.imgur.com/mWbzLWs.jpg </a>
- 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()"
- Untuk error kamu <pre> // coba ubah $id = Auth::user()->id; $admin = Admin::find($id); // menjadi $admin = Admin::where('id', Auth::user()->id)->get(); // atau bisa juga $admin = Admin::where('id', Auth::user()->id)->first(); // atau $admin = Admin::findorFail($id); </pre>
Smoga bisa membantu.
gati app_url pada http://127.0.0.1:8000 atau jika menggunkan localhost ganti dengan http://localhost jika menggunakan xampp ganti dengan localhost/htdoct
APP_DEBUG=true
APP_TIMEZONE=UTC
APP_URL=http://127.0.0.1:8000