I have here an Edit Profile page where user can change his/her profile photo/avatar.
The avatar displayed is the photo of the current user (of course) and when I click the Update Avatar button, the user can select an image, and then the selected image will preview replacing the current user avatar.
Here's the code in my view:
<div class="fileUpload btn btn-warning">
<span>Update Avatar</span>
<input type="file" accept="image/*" onchange="loadFile(event)" class="upload"/>
</div>
<script>
var loadFile = function(event) {
var output = document.getElementById('output');
output.src = URL.createObjectURL(event.target.files[0]);
};
</script>
The problem is that, whenever I click the Update button at the end of the form, the avatar does not change. I know that this is because it's all in the front end. How do I get the newly selected image and save it to the database? Or are there other implementation aside from this one?
BTW, I chose this method because I want to preview the image before and after selection. I tried Kartik's FileInput
widget but I don't know where to put the onchange="loadFile(event)"
event in the plugin.
If you need more code, like my action controller or the model, just let me know.
I really need help in this one.
I don't know if you have found the solution or not.
You can save the picture in directory and filename in DB table as soon as the user selects the picture.
Use this widget 2amigon File Upload Widget to start uploading picture as soon as user selects the picture. This widget renders jQuery File Upload.
Usage:
view
Controller :This will call UserProfileController/actionUploadProfilePicture method.
Model
Apart from this, you can use Advanced upload using Yii2 FileInput widget tutorial for more details in picture uploading.
I hope this helps and clear your issues regarding file upload.