该问题与jquery file upload plugin from blueimp
有关我正在构建一个文件上传是可选的表单。事实证明,当没有选择上传文件时,我无法发布表格。正因为如此,我必须在我的页面上创建两个表单,并且如果用户决定不添加实际数据,则执行所有脏检查以删除上载的文件。
问题是:
即使没有选择文件,我是否可以提交表单,以便我仍然可以在服务器端接收其他表单数据?
答案 0 :(得分:4)
我自己也有同样的问题。我有一个表单(内置Angular),使用蓝色imp角度实现。表格本身有字段;该文件是可选的。需要成为一个帖子(有或没有文件)。
在提交()上没有任何反应。
仅在添加文件时触发上面列出的“有用事件”。
答案 1 :(得分:1)
我知道我迟到了,但到目前为止还没有列出真正的解决方案。您可以通过手动调用add事件来伪造正在添加文件的事实:
$('#fileupload').fileupload('add', { files: [{}] });
您可以设置一个变量来存储表单信息,在添加时更新变量,如果没有文件则触发上面的添加。这是代码的样子:
var fileData;
$('#fileupload').fileupload({
add: function (e, data) {
fileData = data;
}
});
$('form').submit(function () {
if (!fileData) {
$('#fileupload').fileupload('add', { files: [{}] });
}
fileData.formData = params;
fileData.submit();
return false;
});
这使您可以与数据传递到服务器的方式保持一致。
答案 2 :(得分:0)
我知道这是一个老问题,但对于那些在同一问题上挣扎的人来说:
你需要深入了解Doc:
https://github.com/blueimp/jQuery-File-Upload/wiki/Options
有一系列有用的活动:
$('#fileupload')
.bind('fileuploadadd', function (e, data) {/* ... */})
.bind('fileuploadsubmit', function (e, data) {/* ... */})
.bind('fileuploadsend', function (e, data) {/* ... */})
.bind('fileuploaddone', function (e, data) {/* ... */})
.bind('fileuploadfail', function (e, data) {/* ... */})
.bind('fileuploadalways', function (e, data) {/* ... */})
.bind('fileuploadprogress', function (e, data) {/* ... */})
.bind('fileuploadprogressall', function (e, data) {/* ... */})
.bind('fileuploadstart', function (e) {/* ... */})
.bind('fileuploadstop', function (e) {/* ... */})
.bind('fileuploadchange', function (e, data) {/* ... */})
.bind('fileuploadpaste', function (e, data) {/* ... */})
.bind('fileuploaddrop', function (e, data) {/* ... */})
.bind('fileuploaddragover', function (e) {/* ... */})
.bind('fileuploadchunksend', function (e, data) {/* ... */})
.bind('fileuploadchunkdone', function (e, data) {/* ... */})
.bind('fileuploadchunkfail', function (e, data) {/* ... */})
.bind('fileuploadchunkalways', function (e, data) {/* ... */});