java - 请求被拒绝,因为没有找到多部分边界

标签 java javascript jakarta-ee jquery

我在包含一些输入元素的灯箱中使用表单。

<form name="imageUploadForm" action="uploadImage.do" method="post" enctype="multipart/form-data">
<input type="text"  id="id" name="id" style="display: none;" value="">
    <div id="fileUploaderDiv">
         <input type='file' name="file0" id ="file0"  />
    </div>
<input type="submit" value="Submit">
</form>

当我提交表单时,表单重定向到它的操作位置。我只想在不重定向用户的情况下提交表单,这样用户就可以留在灯箱上而不会丢失他的数据。

我试过为此调用 jquery ajax

var data = new FormData();
var $inputs = $('#imageUploadForm :input');
var values = {};
    $inputs.each(function() {
                values[this.name] = $(this).val();
                data.append(this.name, $(this).val());
            });
$.ajax({
                url: 'uploadImage.do',
                data: data,
                cache: false,
                contentType: 'multipart/form-data',
                processData: false,
                type: 'POST',
                success: function(data){
                   alert(data);
                }
            });

但是在我的 FileUploader servlet 的服务器端出现错误。

The request was rejected because no multipart boundary was found 

谁能告诉我我错过了什么?

最佳答案

您需要阻止提交表单的默认操作:

$('form[name="imageUploadForm"]').on('submit', function(e) {
     e.preventDefault();
     $.ajax({
            type: 'POST',
            url: 'uploadImage.do',
            data: data,
            cache: false,
            contentType: false,
            processData: false,
            success: function(data){
               alert(data);
            }
     });
});

我认为您应该在使用 FormData 类时将 contentType 选项设置为 false,强制 jQuery 不添加 Content-Type header ,否则边界字符串将丢失,这可能是您的服务器错误的原因。

您还必须将 processData 标志设置为 false,否则,jQuery 将尝试将您的 FormData 转换为字符串,这将失败。

关于java - 请求被拒绝,因为没有找到多部分边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11811232/

相关文章:

Java新手: cutting a string off?

javascript - 为什么将 gl.texImage2D 中的格式设置为 gl.LUMINANCE 而不是 gl.RGB 会使由 Canvas 制成的 Blob 的文件大小仅减小约 5%?

php - 检查是否设置了cookie,如果没有则输出脚本

javascript - 使用restify模块时发送 Node js后无法设置 header

java - 为什么 Java 的 Map 接口(interface)有一个 containsValue(Object) 方法,但没有 value->keys 查找?

Java Swing GridBagLayout

java - 开发基于 Java EE 的 Web 应用程序时如何提高生产力

jakarta-ee - 接受 Java 中的自签名证书

jakarta-ee - 安装 Swagger CodeGen 时遇到问题

java - 如何在 Jackson 2.7+ 上将命名策略设置为 ObjectMapper?