I'm using the dropzone.js to upload image on ruby on rails .Here is my HTML code
<div class="row">
<div class="col-md-12" id="drop-zone-container">
<%= form_tag '/settlement_proofs', method: :post, class: 'dropzone form', id: 'media-dropzone' do %>
<div class="fallback">
<%= file_field_tag 'attachment', multiple: true%>
</div>
<% end %>
</div>
</div>
and I initialized dropzone as
$("#media-dropzone").dropzone({
acceptedFiles: pg.constants.ACCEPTED_FORMAT,
maxFilesize: pg.constants.ATTACHMENT_MAX_FILE_SIZE, //In MB
maxFiles: pg.constants.ATTACHMENT_MAX_SIZE,
addRemoveLinks: true,
removedfile: function (file) {
if (file.xhr.responseText.length > 0) {
var fileId = JSON.parse(file.xhr.responseText).id;
$.ajax({
url: pg.constants.url.SETTLEMENT_BASE_URL + fileId,
method: 'DELETE',
dataType: "json",
success: function (result) {
$('#uploaded_attachment').val($("#uploaded_attachment").val().replace(result.id + ',', ""));
$('#settlement_proof_status span').fadeOut(0);
var _ref;
return (_ref = file.previewElement) != null ? _ref.parentNode.removeChild(file.previewElement) : void 0;
},
error: function () {
$('#settlement_proof_status').text(I18n.t('attachment_deletion_error')).fadeIn();
}
});
}
},
init: function () {
this.on("success", function (file, message) {
debugger;
appendContent(message.attachment.url, message.id);
});
this.on("error", function (file, message) {
$('#settlement_proof_status span').text(message).fadeIn();
var _ref;
return (_ref = file.previewElement) != null ? _ref.parentNode.removeChild(file.previewElement) : void 0;
});
$('#settlement_invoice_submit_btn').click(function () {
$("#new_settlement_invoice").submit();
});
$('#uploaded_attachment').change(function () {
if (this.value.length == 0) {
this.removeAllFiles();
}
});
}
});
After I submit the form through AJAX, I need the dropzone field to reset with the default image.
Use one of the following methods : The destroy() and disable() methods both exist, and they seem to act the exact same way. In fact, DropZone does not have a real destruction method. These methods will "put the instance in pause" (what is, by design, the closest implementation of a DropZone instance destruction).
dropzone has the following function for removing all files. If you want to remove all files, simply use . removeAllFiles(). Files that are in the process of being uploaded won't be removed.
I'm using Dropzone. js for my website. I'm in the need of uploading bigger files than the default maxFilesize of 500MB.
this.on("complete", function(file) {
this.removeAllFiles(true);
})
write the above code in INIT
function.
this removes all files in dropzone and RESETS the dropzone to initial state.
http://www.dropzonejs.com/#event-reset
Finally, I solved the issue myself. At first I remove the form from its parents element.It removed the existing dropzone instance.Then I create the form using the jQuery and reinitialize the dropzone again. Here is my complete code
// To reset dropzone before popup load
var resetDropzone = function () {
$('#drop-zone-container').empty();
var $form = makeElement('form', {
action: window.pg.constants.url.SETTLEMENT_BASE_URL,
method: 'post',
id: 'settlement-proof-form',
class: 'dropzone'
});
$('#drop-zone-container').append($form);
var settlmentProofDropZone;
$("#settlement-proof-form").dropzone({
acceptedFiles: pg.constants.ACCEPTED_FORMAT,
maxFilesize: pg.constants.ATTACHMENT_MAX_FILE_SIZE, //In MB
maxFiles: pg.constants.ATTACHMENT_MAX_SIZE,
addRemoveLinks: true,
removedfile: function (file) {
if (file.xhr.responseText.length > 0) {
var fileId = JSON.parse(file.xhr.responseText).id;
$.ajax({
url: pg.constants.url.SETTLEMENT_BASE_URL + fileId,
method: 'DELETE',
dataType: "json",
success: function (result) {
$('#uploaded_attachment').val($("#uploaded_attachment").val().replace(result.id + ',', ""));
$('#settlement_proof_status span').fadeOut(0);
var _ref;
return (_ref = file.previewElement) != null ? _ref.parentNode.removeChild(file.previewElement) : void 0;
},
error: function () {
$('#settlement_proof_status').text(I18n.t('attachment_deletion_error')).fadeIn();
}
});
}
},
init: function () {
settlmentProofDropZone = this;
this.on("success", function (file, message) {
appendContent(message.attachment.url, message.id);
});
}
});
};
function makeElement(element, options) {
var $formField = document.createElement(element);
$.each(options, function (key, value) {
if (key === 'innerHTML') {
$formField.innerHTML = value;
}
else {
$formField.setAttribute(key, value);
}
});
return $formField;
}
});
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