我关闭了AutoLoad的jQuery FileUpload遇到了很多问题。我需要在一个请求中提交所有内容 - 而不是多个。我有3天的时间和很多研究。我只是觉得我错过了一件事。这就是我得到的:
jQuery的:
$(function(){
var ul = $('#upload ul');
// Initialize the jQuery File Upload plugin
$('#entry_form_doc').fileupload({
type: 'POST',
url: 'leadresources/submitDoc',
limitMultiFileUploads: 5,
autoUpload: false,
dropZone: $('#drop'),
add: function (e, data) {
//fired by a click of a button.
$("#submit_doc").unbind('click').on('click', function(){
data.formData = {files: data.originalFiles};
data.submit();
});
},
fail:function(e, data){
// Something has gone wrong!
data.context.addClass('error');
}
});
});
当我将print_r()打印到Log:
时,这就是Laravel得到的 [2015-03-16 14:27:27] production.INFO: Array
(
[lb_id] =>
[lb_doc_title] => asdf
[lb_docs_summary] =>
[file] => Array
(
[0] => Symfony\Component\HttpFoundation\File\UploadedFile Object
(
[test:Symfony\Component\HttpFoundation\File\UploadedFile:private] =>
[originalName:Symfony\Component\HttpFoundation\File\UploadedFile:private] => photo 2.JPG
[mimeType:Symfony\Component\HttpFoundation\File\UploadedFile:private] => image/jpeg
[size:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 498589
[error:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 0
[pathName:SplFileInfo:private] => C:\xampp\tmp\php31F9.tmp
[fileName:SplFileInfo:private] => php31F9.tmp
)
)
)
[] []
)
[] []
现在,它只返回第一个对象而没有别的。我想这是有道理的,因为data.submit在第一个图像上被触发然后解除绑定。
很长一段时间,我收到多个提交,但我只想用fileListArray提交一次 - 而不是单个文件。我试图创建一个文件列表数组,但Laravel记录了一个[object FileList],就是这样。
所以有没有其他人能够在没有autoLoad和一个请求的情况下解决这个问题 - 而不是多个。我已经关注了documentation谈论singleFileUploads但仍然......没有用。
只是好奇是否还有其他人在使用此功能。这是一个很棒的插件 - 真的很难搞清楚。
我还应该说我之所以要关闭自动加载是因为我需要提交3个表单字段才能首先返回ID,这样我才能将ID附加到这些文档中。
答案 0 :(得分:0)
这真的不是一个答案(所以我不会标记它),但我确实找到了另一个插件,但是不那么喜欢。我最后只使用了Dropzone。它更容易使用,并且具有我正在寻找的更多功能。
修改强> 有人问我是怎么用Dropzone做的。以下是我的表现方式:
$("#entryDoc").dropzone({
url: "submitDoc",
uploadMultiple: true,
maxFiles: 5,
parallelUploads: 5,
autoProcessQueue:false,
addRemoveLinks: true,
thumbnailWidth: 100,
thumbnailHeight: 100,
paramName: 'files',
dictRemoveFile: 'X',
dictCancelUpload: 'Cancel',
dictFallbackMessage: 'Your browser does not support dropzone. Please update your browser',
dictInvalidFileType: 'File type not accepted. It has been removed from the queue.',
dictFileTooBig: 'File is too big. It has been removed from the queue.',
maxfilesexceeded: 'Only 5 files can be uploaded.',
dictResponseError: 'Could not upload your files. Please try again or reach out to the developer.',
fallback: function(){
$('#entryDoc').html('Please update your browser.');
},
init: function(){
var myDropZone = this;
myDropZone.on("sendingmultiple", function (files, xhr, formData) { //this form data gets sent over with the files.
formData.append("action", $('#action').val());
formData.append("lb_type_code", 'files');
formData.append("lb_id", $('#lb_id').val());
});
$("#submit_doc").click(function () {
var check = formValidation($('#files_container'));
if(!check){
$.jqDialog.alert("You are missing some required fields.");
return false;
}
myDropZone.processQueue();
});
},
success: function(){
//what you want it to do after it successfully uploaded
},
error: function(file, errorMessage){
//error here
}
});