蓝胧月 2019-12-18 11:04 采纳率: 50%
浏览 377
已采纳

ajax同时上传xlsx文件和1条字符串,参数怎么传递

单独上传xlsx没有问题,但是多加一条字符串报错:org.springframework.web.multipart.MultipartException: The current request is not a multipart request

以下是我的代码:

jsp:

<div class="btn-file col-md-6">
    <button id="btn_upload" type="button" class="btn btn-success" style="width: 100px;margin-right: 20px">
        <i class="fa fa-cloud-upload" aria-hidden="true"></i> 文件上传
    </button>
</div>

js:

$("#btn_upload").on("click", function () {
    var date = $("#date").val();
    var s = document.getElementById("fileUpload");
    if (s !== undefined) {
        $("#fileUpload").remove();
    }
    var inputObj = document.createElement('input');
    inputObj.setAttribute('id', 'fileUpload');
    inputObj.setAttribute('type', 'file');
    inputObj.setAttribute('name', 'file');
    inputObj.setAttribute('accept', '.csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel');
    inputObj.setAttribute("style", 'visibility:hidden');
    document.body.appendChild(inputObj);
    inputObj.click();
    $("#fileUpload").on('change', function () {
        $("#inputText1").val(this.files[0].name);
        if ($("#fileUpload").val() !== "") {
            var formData = new FormData();
            formData.append("file",this.files[0]);
            $.ajax({
                type: "post",
                url: appName + '/report/upload.do',
                data: {
                    data:data,
                    file:formData
                },
                dataType: "text",
                processData: false,
                contentType: false,
                success: function (result) {
                if (result == "success"){
                    layer.msg("提交成功!", {icon: 6, time: 3000});
                }  else {
                    layer.msg("提交失败!", {icon: 2, time: 3000});
                }
                },
                error: function () {
                    layer.msg("请求失败!", {icon: 2, time: 3000});
                }
            });
            layer.msg('文件上传!', {icon: 1, time: 3000});
        } else {
            layer.msg("请先选择文件!");
        }
        });
        });

controller:

@RequestMapping(value="/upload.do")
    @ResponseBody
    public String upload(String date, MultipartFile file) throws IOException {
        String path = "F:\\upload";
        String fileName = file.getOriginalFilename();
        File dir = new File(path,fileName);
        if(!dir.exists()){
            dir.mkdirs();
        }
        //MultipartFile自带的解析方法
        file.transferTo(dir);
        System.out.println(date);
        System.out.println(fileName);
        return "fail";
    }
  • 写回答

1条回答 默认 最新

  • 毕小宝 博客专家认证 2019-12-18 11:17
    关注

    首先,有文件表单和普通文本表单,那么 dataType: "text", 设置的应该是有问题,应该用 Multi-data 类型的吧。
    其次,data 配置的 name 是 data ,而 Controller 中的参数是 date 不一致。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 单纯型python实现编译报错
  • ¥15 c++2013读写oracle
  • ¥15 c++ gmssl sm2验签demo
  • ¥15 关于模的完全剩余系(关键词-数学方法)
  • ¥15 有没有人懂这个博图程序怎么写,还要跟SFB连接,真的不会,求帮助
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题