为什么ajax post无法将文件正确保存在服务器上?

时间:2018-11-26 19:16:43

标签: java jquery ajax spring-boot

所以我仍然在这里迷路。我有一个模态的形式。模态用于“附加”文件。我想将文件临时存储在服务器上,然后在提交表单时通过电子邮件将表单输入值的其余部分发送给它。我正在使用此ajax调用将其发布到服务器,以便整个表单不会提交和刷新页面。但是要通过ajax调用保存它,我需要序列化文件,因此它不能正确保存。 我对此有多个问题...一个是文档被另存为null且无法打开,我相信原因是我不知道如何获取文件名。文档通常用于在sql数据库文档表中创建一个新项目,因此通过这种方式调用它,我在数据库中得到一个空条目。有更好的方法可以做到这一点吗?我也尝试过将文件保存为多部分文件,但是我无法获得与之相关的ajax帖子,因为它似乎需要序列化。任何想法都非常感谢。 谢谢!

这是我的控制人:

@RequestMapping(value="/directBindAjax", method=RequestMethod.POST)
public @ResponseBody Document docSend(@ModelAttribute(value="document") Document document, Model model) throws IOException {
        FileOutputStream fout = new FileOutputStream(storageService.getUploadDir() + document.getStorage());
        ObjectOutputStream oos = new ObjectOutputStream(fout);

        model.addAttribute("document", document);
        return document;
}

这是我的ajax电话

$('#attachTheDoc').on('click', function(event){
                var data = $('#newRequiredDocForm').serialize();
                
                $.ajax({
                    type: "POST",
                    url: "/directBindAjax",
                    data: data,
                    processData: false,
                    cache: false,
                    success: function(data, jqXHR){
                       alert("Your files have been saved");
                    }
                });
            });

这是我尝试按照另一篇文章中有关通过ajax发送表单的建议进行操作时遇到的错误。我的网络浏览器也出现403错误。 enter image description here

这是我的html表格:

<form enctype="multipart/form-data" id="newRequiredDocForm"  th:action="@{/directBindAjax}" method="post" th:object="${newDoc}">
  <br/>
  <div class="row">
      <div class="col-xs-4 col-sm-3 text-right"><label class="modalLabel">Type:</label></div>
      <div class="col-xs-8 col-sm-7">
          <select class="form-control" id="type">
              <option value="Invoice">Invoice</option>
              <option value="Binder">Binder</option>
              <option value="Application">Application</option>
          </select>
      </div>
  </div>
  <br/>
  <div class="row">
      <div class="col-xs-4 col-sm-3 text-right">
          <label class="modalLabel">File:</label>
      </div>
      <div class="col-xs-8 col-sm-7">
          <input type="file" id="file" name="upfile" multiple="multiple" style="margin-right:-20px;"/>
      </div>
  </div>
  <br/><br/>
  <div style="text-align: right;">
      <input type="button" id="attachTheDoc" class="btn btn-docModal" value="Upload"/>
  </div>
</form>

0 个答案:

没有答案