prgrm
prgrm

Reputation: 3835

Display uploaded image works in Windows but not in Linux

This code works perfectly and saves the image properly:

if(request()->file("avatar_upload")) {
    $file = request()->file("avatar_upload");
    $ext = $file->guessClientExtension();
    if($ext == "jpg" || $ext == "jpeg" || $ext == "png"){
        $file->storeAs('public/avatars/' . Auth::user()->id , "avatar.jpg");
    }
}

Now to display it I use this, which works in Windows but not in Linux:

@if(File::exists('/storage/avatars/'.Auth::user()->id))
    <div class="image-upload">
        <label for="avatar_upload">
            <img src="{{asset('/storage/avatars/'.Auth::user()->id)."/avatar.jpg"}}"/>
        </label>
        <input id="avatar_upload" name="avatar_upload" type="file"/>
    </div>
@else
    <div class="image-upload">
        <label for="avatar_upload">
            <img src="/assets/admin/img/noimage.png"/>
        </label>
        <input id="avatar_upload" name="avatar_upload" type="file"/>
    </div>
@endif

This always displays noimage.png in Linux, while it retrieves and displays the image Windows.

Any idea why?

Upvotes: 0

Views: 101

Answers (1)

AddWeb Solution Pvt Ltd
AddWeb Solution Pvt Ltd

Reputation: 21691

If you already created folder permission for "storage/avatars" and got same issue then:

I think your code need to update like:

@if(File::exists('/storage/avatars/'.Auth::user()->id.'/avatar.jpg'))
   <div class="image-upload">
       <label for="avatar_upload">
           <img src="{{asset('/storage/avatars/'.Auth::user()->id).'/avatar.jpg'}}"/>
       </label>
       <input id="avatar_upload" name="avatar_upload" type="file"/>
   </div>
@else
   <div class="image-upload">
       <label for="avatar_upload">
           <img src="/assets/admin/img/noimage.png"/>
       </label>
       <input id="avatar_upload" name="avatar_upload" type="file"/>
   </div>
@endif

Hope this work for you!

Upvotes: 1

Related Questions