好的。對於任何使用基本插件並需要上述要求的人,在這裏。
對於我添加的每個文件,我都動態地添加一個具有文件特定輸入的表格行。
在我更改之前,該插件發佈了包含所有輸入的表單。文件特定的輸入具有相同的名稱,並在服務器端以字符串數組的形式接收。
我做了什麼改變這是在回調add(),我分配上下文到新的唯一表行。 然後在提交時,我從上下文中找到所有文件特定的輸入,並通過唯一的id找到所有常見的表單輸入。
然後,我將它們序列化並將它們合併在一起,然後再分配回formData。
實施例:
形式的公共輸入端:
<table id="commonFields" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<form:label path="firstName">
<spring:message code="fileupload.upload.member.input.firstname.label"/>
<form:errors path="firstName" cssClass="error" />
</form:label>
<form:input path="firstName" size="30"/>
</td>
<td>
<form:label path="lastName">
<spring:message code="fileupload.upload.member.input.lastname.label"/>
<form:errors path="lastName" cssClass="error" />
</form:label>
<form:input path="lastName" size="30"/>
</td>
</tr>
</table>
JavaScript代碼段
$('#fileuploadForm').fileupload({
dataType: 'json',
add: function (e, data) {
$.each(data.files, function (index, file) {
var rowCount = $('#fileUploadTable tr').length;
$('#fileUploadTable tr:last').after('<tr id=' + rowCount + ' ><td>' + file.name + '</td><td><span class="field"></span></td><td><input type="text" size="30" value="" name=comment></td><td>' + file.size + '</td> <td>Ready to upload</td></tr>');
data.context = $('#' + rowCount + '');
});
$("#upload").click(function() {
data.submit();
});
},
submit: function (e, data) {
//this will overwrite all the form data posted to the server
//may need to find all inputs and selects too
var fileSpecificFields = data.context.find(':input').serializeArray();
var commonFieldInputs = $('#commonFields').find(':input').serializeArray();
data.formData = $.merge(commonFieldInputs, fileSpecificFields);
}
});
乾杯, 沙恩。 :
該文檔解釋瞭如何以更簡單的方式實現它https://github.com/blueimp/jQuery-File-Upload/wiki/How-to-submit-additional-form-data#setting-formdata- on-upload-start-for-each-individual-file-upload(當你發佈你的問題時,它可能不存在) –
我相信這個例子是針對UI版本插件和模板引擎的。不是基本的插件。 –
事實上似乎是這樣 –