Mam ten dziwny problem i wypróbowałem kilka rozwiązań (nawet wdrażając to samo, co demo Basic Plus na ich stronie internetowej). Mogę przesyłać pliki w porządku, pojedyncze lub wielokrotne. Przesyłają po kliknięciu pojedynczego elementu lub przycisku "Prześlij wszystko". Problem polega na próbie dodania dodatkowych plików przed lub po przesłaniu. Wtyczka do przesyłania plików nie wykryje nawet, że te pliki zmieniają się w pliku wejściowym, więc nigdy nie uruchamia zdarzenia "fileuploadadd" i wymaga ode mnie odświeżenia strony, aby przesłać więcej plików. Zastanawiam się, czy zdarzenie zmiany pliku jest gdzieś utracone, ale nie mogę dla mnie dowiedzieć się gdzie.Przesyłanie plików Blueimp Plugin ładuje się tylko raz
Co więcej, czy wtyczka do przesyłania plików blueimp wymaga określonego formatu zwrotu JSON? Z minuty na minutę wracam "{\"status\":\"success\"}
, jeśli przesyłanie się powiedzie i podobny komunikat o błędzie. EDYCJA: Zmiana formatu odpowiedzi na przykłady pokazane przez blueimp nie przyniosła żadnego efektu.
Oto kod dla przesyłającego, którego używam. Zauważ, że używam obecnie ASP.NET i jQuery 2.0.3 oraz jQuery UI 1.9.2.
function initFileUploader() {
//initProgressBars();
$(upload_progressbar_title).css('display', 'none');
$(upload_progressbar).css('display', 'none');
$(upload_upload).on('click', function() {
$(upload_progressbar).css('display', 'block');
$(upload_progressbar_title).css('display', 'block');
$('.uploadbtn').click();
});
$(upload_browse).on('click', function() {
$(upload_file).click();
return false;
});
$.guid = 0;
console.log('initialising file upload');
var uploadButton = $('<input type="button" id="button" />')
.addClass('button tiny').addClass('uploadbtn')
.prop('disabled', true)
.val('Processing...');
var uploadCon = $('<div class="small-4 medium-6 large-6 columns progresscontainer" />')
.append('<div class="progressbar" />')
.append('<label class="progressbarlabel">Not uploading</label>');
uploadCon.append($(uploadButton).on('click', function() {
var $this = $(this),
data = $this.parent().data();
$this
.off('click')
.val('Abort')
.on('click', function() {
$this.remove();
data.abort();
});
data.submit().always(function() {
$this.remove();
}).success(function (result, textStatus, jqXHR) { console.log("Result: " + result + " - TextStatus " + textStatus); })
.error(function (jqXHR, textStatus, errorThrown) { console.log("Error: " + errorThrown + " - TextStatus " + textStatus); })
.complete(function (result, textStatus, jqXHR) { console.log("Result: " + result + " - TextStatus " + textStatus); });
}));
$(upload_file).fileupload({
dataType: 'json',
autoUpload: false,
acceptFileTypes: /(\.|\/)(pdf|jpe?g|png|doc|docx)$/i,
maxFileSize: 5000000, // 5 MB
}).on('fileuploadadd', function (e, data) {
var uniqueId = $.guid++;
data.context = $('<div id="div_upload_dcon_' + uniqueId +'" class="row"/>').appendTo(upload_filescon);
$.each(data.files, function (index, file) {
file.uniqueId = uniqueId;
var node = $('<div id="div_fname" class="small-6 medium-4 large-4 columns"/>')
.append($('<span/>').text(file.name));
if (!index) {
data.url = baseUrl + 'PostUploadFile?fileName=' + data.files[index].name + '&refId=' + ClientRefId + '&upbyid=' + ClientUserId + '&ticketId=' + globalTicketId;
var contentNode = (uploadCon.clone(true).data(data));
}
node.appendTo(data.context);
$(contentNode).appendTo(data.context);
$(upload_file).on('change', function() {
alert('changing fileinput');
});
});
}).on('fileuploadstart', function (e, data) {
initProgressBars();
}).on('fileuploadchange', function (e, data) {
alert('changing');
}).on('fileuploadprocessalways', function (e, data) {
var index = data.index,
file = data.files[index],
node = $(data.context.children()[index]);
if (file.error) {
console.log(file.error));
}
if (index + 1 === data.files.length) {
$('.uploadbtn').val('Upload').prop('disabled', !!data.files.error);
}
}).on('fileuploadprogress', function (e, data) {
var progress = parseInt(data.loaded/data.total * 100, 10);
$('#div_upload_dcon_' + data.files[0].uniqueId).progressbar('value', progress);
}).on('fileuploadprogressall', function (e, data) {
var progress = parseInt(data.loaded/data.total * 100, 10);
$(upload_progressbar).progressbar('value', progress);
}).on('fileuploaddone', function (e, data) {
getTicketContent(globalTicketId);
}).on('fileuploadstop', function (e, data) {
$(upload_file).val('');
}).on('fileuploadfail', function (e, data) {
$.each(data.files, function (index, file) {
var error = $('<span class="text-danger"/>').text('File upload failed.');
$(data.context.children()[index])
.append('<br>')
.append(error);
});
});
}
Świetnie! Dokładnie ten sam problem, który miałem. – d9120
dziękuję, uratuj mój dzień! –
Zapisz też mój dzień! –