I am currently using Dropzone to allow users upload some files into the system I'm developing and have linked the Dropzone to a div
within my form,
But once the upload is complete, I would like the filename of the newly uploaded file to be returned to the Dropzone as a hidden
form input so that I can save the filename in the database.
Below is the code Im using:
$(document).ready(function(){
var myDropzone = new Dropzone("div#my-awesome-dropzone", {
url: "?content=plg_dropzone&folder=php&file=uploadhandler&alert=yes",
addRemoveLinks : true,
acceptedFiles : "application/pdf",
maxFilesize: 5, // MB
maxFiles: 5
});
});
Assistance on this will be greatly appreciated. I've searched on the net and not gotten a solution.
Thanks
Thanks to @edwin Krause giving the first hint for me on this. But because I needed to do another search on it to actually replace the source of the preview I add my finding here for others not knowing exactly how to do it.
success: function( file, response ) {
file.previewElement.querySelector("img").src = response;
}
My PHP script is echoing the name of the cropped image which has been uploaded as plain HTML if you returning JSON your success callback could look like this
success: function( file, response ) {
obj = JSON.parse(response);
file.previewElement.querySelector("img").src = obj.src;
}
Or version of the code which works in Dropzone.js 5.7.2 (July 23rd 2020) is:
success: function( file, response ) {
file.previewElement.querySelector("img").src = response.src;
}
Notice: obj.src
or response.src
- src
has to match your json property of course.
You could even replace the whole file.previewElement
with your server response
I believe using the success callback and a JSON response from the server is the best way to do it? This works great for me, Hope that helps (fileupload_flag I'm using to prevent form submission before upload is completed)
My Dropzone config:
Dropzone.options.myAvatarDropzone = {
maxFilesize: 3, // MB
maxFiles: 1,
addRemoveLinks: true,
init: function() {
this.on("addedfile", function(file) { fileupload_flag = 1; });
this.on("complete", function(file) { fileupload_flag = 0; });
},
accept: function(file, done)
{
var re = /(?:\.([^.]+))?$/;
var ext = re.exec(file.name)[1];
ext = ext.toUpperCase();
if ( ext == "JPG" || ext == "JPEG" || ext == "PNG" || ext == "GIF" || ext == "BMP")
{
done();
}else {
done("Please select only supported picture files.");
}
},
success: function( file, response ){
obj = JSON.parse(response);
alert(obj.filename); // <---- here is your filename
}
};
My server response:
$upload_success = $file->move($pubpath.$foldername, $filename);
$success_message = array( 'success' => 200,
'filename' => $pubpath.$foldername.'/'.$filename,
);
if( $upload_success ) {
return json_encode($success_message);
} else {
return Response::json('error', 400);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With