Я использую прекрасный загрузчик двумя способами, но все в одном процессе. У меня есть файлы PDF, которые я разделяю и объединяю, и делаю это локально с помощью простого тонкого экземпляра uploader. Когда я закончил, я хочу загрузить каждый объединенный файл в наш ведро amazon s3. У меня есть два экземпляра прекрасного загрузчика в том же файле javascript. Тем не менее, экземпляр s3 дает ошибку, поскольку она определена в оболочке jquery.Возможно ли создать экземпляр upload s3 одновременно с обычным экземпляром прекрасного экземпляра?
Процесс этой страницы включает в себя следующее:
- Пользователь выбирает кнопку загрузки на первом пользователя, чтобы загрузить PDF-файл
модальное всплывает, чтобы позволить пользователю выбрать, следует ли Загрузите файл как есть или разделите PDF-файл на отдельные страницы , если пользователь выберет для загрузки как есть ... s3 bucket fine uploader is invoked (не работает сейчас); если пользователь выбирает разделение файлов pdf , после того, как файлы будут разбиты, появится еще одна модальная мода и отобразит отдельные страницы для реорганизации пользователя по типу документа.
после реорганизации страниц pdf в отдельные типы документов, они объединяются в новые pdf-файлы.
- по завершении каждого объединенного файла, я хочу загрузить этот файл в ведро s3 для этого пользователя. Здесь нужно вызвать второй экземпляр загрузчика, чтобы добавить файлы, а затем загрузить файлы.
Вот сообщения об ошибках, я получаю в консоли JavaScript (с помощью Chrome), когда пользователь выбирает кнопку первой загрузки:
VM33414:16
Uncaught TypeError: Cannot read property 'uuid' of undefined**
qq.basePublicApi.getUuid @ VM33414:16
qq.basePrivateApi._onSubmitDelete @ VM33414:17
qq.uiPrivateApi._onSubmitDelete @ VM33414:18
qq.basePublicApi.deleteFile @ VM33414:16
(anonymous function) @ VM33416:224
b.event.dispatch @ jquery-1.9.1.min.js:3
v.handle @ jquery-1.9.1.min.js:3
VM33416:157
merged file: /var/www/html/ajax/common/files/044da577-e054-407a-95a5-aaa17899897b/1_TestDoc5_W9.pdf
VM33416:165 Uncaught TypeError: $(...).fineUploaderS3 is not a function
jQuery.ajax.success @ VM33416:165
c @ jquery-1.9.1.min.js:3
p.fireWith @ jquery-1.9.1.min.js:3
k @ jquery-1.9.1.min.js:5
r @ jquery-1.9.1.min.js:5
VM33416:157
merged file: /var/www/html/ajax/common/files/044da577-e054-407a-95a5-aaa17899897b/1_TestDoc5_License.pdf
VM33416:165 Uncaught TypeError: $(...).fineUploaderS3 is not a function
jQuery.ajax.success @ VM33416:165
c @ jquery-1.9.1.min.js:3
p.fireWith @ jquery-1.9.1.min.js:3
k @ jquery-1.9.1.min.js:5
r @ jquery-1.9.1.min.js:5
VM33416:157
merged file: /var/www/html/ajax/common/files/044da577-e054-407a-95a5-aaa17899897b/1_TestDoc5_Other.pdf
VM33416:165 Uncaught TypeError: $(...).fineUploaderS3 is not a function
Вот мой файл сценария:
var thisArray=[];
var pdfoptions=[];
var mydate = new Date();
var month = mydate.getMonth() + 1 ;
var today = month + '/' + mydate.getDate() + '/' + mydate.getFullYear();
//s3 instance
$('#s3-uploader').fineUploaderS3({
debug: true,
autoUpload: false,
uploaderType: 'basic',
request: {
endpoint: 'rog-zone.s3.amazonaws.com',
accessKey:'################'
},
objectProperties: {
// Since we want all items to be publicly accessible w/out a server to return a signed URL
acl: "public-read"
},
signature: {
endpoint: "/assets/plugins/fine-uploader/signature/endpoint.php"
},
validation: {
itemLimit: 5,
sizeLimit: 15000000
}
}).on('submit', function (event,id, name) {
console.log("[on submit] id:"+id+ " and name:"+name);
return new Promise(function(resolve, reject) {
resolve();
});
}).on('complete', function(event,id,fileName,responseJSON,xhr){
console.log("[on complete]:"+id+ " and filename:"+fileName);
var $fileEl = $(this).fineUploaderS3("getItemByFileId", id);
}).on('upload', function(event, id, name, isError,responseJSON) {
var obj = JSON.stringify(responseJSON);
console.log("[on Upload] id:"+id+ " and response = "+obj);
}
);
//manual file uploader for local processing. WHen done, upload merged file to s3 bucket
var manualUploader = new qq.FineUploader({
element: document.getElementById("fine-uploader"),
template: 'qq-template-manual',
debug: true,
request: {
endpoint: "/ajax/common/endpoint.php"
},
deleteFile: {
enabled: true,
endpoint: "/ajax/common/endpoint.php"
},
chunking: {
enabled: true
},
resume: {
enabled: true
},
retry: {
enableAuto: true,
showButton: true
},
callbacks: {
onUpload: function (id, name) {
console.log("onUpload");
},
onComplete: function(id, fileName, responseJSON){
console.log("onComplete >> id:"+id+ "; filename:"+fileName+"; folder:"+responseJSON.uuid);
var uuid = responseJSON.uuid;
$("#splitter_uuid").val(uuid);
var filetosplit = uuid+"/"+fileName;
var imgsrc = 'ajax/common/files/'+uuid+'/';
var fileinfo = fileName.split(".");
var fileprefix = fileinfo[0];
$("#splitter_filename").val(fileName);
jQuery('#pdfHandler').modal();
jQuery('#btnUploadPDF').click(function() {
return true;
});
jQuery('#btnSplitPDF').click(function (e) {
jQuery.ajax({url: "http://52.11.64.64/ajax/common/pdfsplitter.php?pdf="+filetosplit,
success: function(result){
//console.log("result from ajax:"+result);
jQuery("#pagecounttext").text("There are "+result+" pages to split. Please indicate how you would like to organize these files below.");
for (i=1;i<=result;i++){
var imgfile = fileprefix+'_'+i+'.jpg';
var pdfpage = '<a href="#" class="btn pdf-page text-inverse p-0" data-page-id="'+i+'"><img class="imgsplit" src="'+imgsrc+imgfile+'" height=90 border="1"><a/>';
//<i class="btl bt-file bt-3x"></i>
jQuery("#pdfpages").append(pdfpage);
}
//show modal where user selects how to organize pages with document type
$("#pdfSplitter").modal("show");
//add pages selected to document type
jQuery('a.pdf-page').on('click',function(e){
e.preventDefault();
var thisPageID=jQuery(this).data("page-id");
thisArray.push(thisPageID);
thisArray.sort();
jQuery(this).attr("disabled",true);
jQuery('#pdfSplitterTable tr.active td input').val(thisArray);
//save selections in local array since this element does not seem to persist to when it is needed
var thisoption = jQuery("#pdfSplitterTable tr.active td select").val();
});
jQuery('#btnAddDocumentRow').on('click',function(e){
e.preventDefault();
var originalSelID=jQuery('#pdfSplitterTable tr.original td select').attr('id');
var pdfSplitterTableLen=jQuery('#pdfSplitterTable tr').length;
jQuery('#pdfSplitterTable tr').removeClass('active');
jQuery('#pdfSplitterTable tr:last').clone().insertAfter('#pdfSplitterTable tr:last');
jQuery('#pdfSplitterTable tr:last').removeClass();
jQuery('#pdfSplitterTable tr:last').addClass('active');
jQuery('#pdfSplitterTable tr:last td input').val('');
jQuery('#pdfSplitterTable tr:last td select').attr('id',originalSelID+pdfSplitterTableLen);
jQuery('#pdfSplitterTable tr:last td select').attr('name',originalSelID+pdfSplitterTableLen);
jQuery("select[name='"+originalSelID+pdfSplitterTableLen+"']").val(0);
jQuery("select[name='"+originalSelID+pdfSplitterTableLen+"']").change();
thisArray=[];
});
}});
return true;
});
},
onSubmit: function(id,name){
var fileExtension = name.substring(name.lastIndexOf('.') + 1).toUpperCase();
if(fileExtension==='PDF'){
//jQuery('#pdfHandler').modal();
return true;
} else {
alert("Please select a PDF file");
return false;
}
},
onSubmitted: function (id, name) {
//console.log("onSubmitted");
}
}
});
$(document).ready(function() {
jQuery('#btnUploadPDF,#btnSplitPDF').on('click',function(e){
jQuery('#clickfrom').val('nav-tabs');
});
jQuery('#btnSplitPDF').on ('click',function(e){
e.preventDefault();
});
jQuery("#btnUploadFiles").on('click',function(e){
var uuid = jQuery("#splitter_uuid").val();
var filename = jQuery("#splitter_filename").val();
var userid = jQuery("#splitter_userid").val();
jQuery("#pdfSplitterTable td select").each(function() {
var option = jQuery(this).val();
var pageids = jQuery(this).closest('td').next().find('input').val();
console.log("pageids: "+pageids+" and option="+option);//test this
//add new item to table of documents for user
var lastclass = jQuery("#document-checklist tr").last().attr("class");
var newclass = 'even';
if (lastclass=='even'){newclass = 'odd';}
jQuery("#document-checklist tbody")
.append('<tr class="'+newclass+'"><td>'+option
+'</td><td>Pending Review</td><td></td><td>'+today
+'</td><td></td><td></td><td><a href="#"></a><i class="fa fa-file-pdf-o"></i></a></td></tr>');
//console.log("merge files: "+JSON.stringify(pdfoptions));
jQuery.ajax({url: "http://52.11.64.64/ajax/common/pdfmerge.php?pdf="+filename+"&uuid="+uuid+"&pageids="+pageids+"&option="+option+"&userid="+userid,
success: function(mergedfile){
//result is new merged filename to upload
console.log("merged file: "+mergedfile);
//HERE IS WHERE I WANT TO UPLOAD TO S3
jQuery("#s3-uploader").fineUploaderS3('addFiles',mergedfile);
jQuery("#s3-uploader").fineUploaderS3('uploadStoredFiles');
}
});
});
manualUploader.deleteFile();
});
});//doc ready
Thank you, Cindy
Спасибо, Дэн. На данный момент я перешел к созданию локальной загрузки сначала, так как мне пришлось разделять и объединять файлы перед загрузкой в мой s3-файл. Итак, теперь я использую один экземпляр ведро s3, чтобы просто загружать файлы после обработки локально. Синди – CindyS