gpt4 book ai didi

javascript - blueimp jQuery-File-Upload - 如何提交没有附加文件的表单?

转载 作者:可可西里 更新时间:2023-11-01 02:10:59 25 4
gpt4 key购买 nike

我找到了关于如何在提交文件上传表单时添加额外表单数据的解决方案。本题是在没有文件上传的情况下如何上传附加数据。

我在任务管理应用程序中使用 blueimp jquery-file-upload 来拖放文件并将它们附加到任务。

脚本已初始化并设置为在附加文件时不会自动上传。在 fileuploadadd 回调中,我将 data.submit() 附加到我的 submit 事件处理程序。这样就完成了我们在一个 POST 请求中提交任务数据和文件。

在添加文件之前,我无法访问文件上传 data 以使用 data.submit() 函数。我通过在页面加载时添加一个空文件(然后删除它)来解决这个问题,这将触发绑定(bind) data.submit() 到提交按钮。问题是插件在尝试遍历空文件数组时返回错误。如果您添加了一个文件,然后在提交表单之前将其删除,也会出现此问题。

一段时间以来,我一直在寻找解决方案,并且四处寻找,但在(恕我直言)糟糕的文档中找不到任何东西。

看看下面我的代码:

    $('#post_task').fileupload({
autoUpload: false,
singleFileUploads: false,
disableImagePreview: true,
}).on('fileuploadadd', function (e, data) {
$.each(data.files, function (index, file) {
var filename = file.name,
filesize = bytesToSize(file.size)
ext = filename.substr(filename.lastIndexOf('.')+1,5),
icon = '<i class="sprite_file sprite_file-file_extension_'+ext+'"></i>',
node = $('<li/>').append($('<span/>').html(icon + filename + ' ' + filesize + '<a href="#">&times</a>')).attr('data-index',index);

node.find('a').click(function(e){
e.preventDefault();
var $self = $(this),
$listItem = $self.parents('li'),
listIndex = $listItem.attr('data-index');
$listItem.remove();
$('#files li').attr('data-index',function(index){return index;});
data.files.splice(listIndex,listIndex);
console.log(data);
vardata = data;
});
$('#files').append(node);
});
$('#post_task').unbind('submit').submit(function(ev){
ev.preventDefault();
data.submit();
});
});

最佳答案

我遇到了同样的问题,如果没有文件,我最终在提交之前添加了一个空文件。

$("#fileupload").fileupload('add', {
files: ['']
});

这在我的情况下非常有效,后端在提交的文件为空时收到 POST。

对于大多数浏览器(经过测试的 Chrome 和 FF),我的后端将不会收到任何文件(空),但是对于 IE8,有一个大小为 0 的文件。我没有在任何其他 IE 上测试过它。

关于javascript - blueimp jQuery-File-Upload - 如何提交没有附加文件的表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21760757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com