You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JSP上传CSV文件至Servlet失败,请求内容类型异常排查

问题原因及修复方案

核心错误点

  • enctype 属性位置错误:你把enctype="multipart/form data"写在了<input type="file">标签上,正确做法是将该属性添加到<form>标签上,只有表单声明此属性,浏览器才会以多部分表单数据格式发送请求。
  • enctype 值拼写错误:multipart/form-data中的form-data是连写的,你写成了form data(中间有空格),导致浏览器无法识别正确的请求格式。
  • JSP隐藏标签未闭合:<input type="hidden">标签没有闭合,可能引发HTML解析异常,影响表单提交逻辑。

修复后的JSP代码

<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<TABLE>
    <tr>
        <td>
            <form action="CIServlet" method="post" enctype="multipart/form-data">
                <input type="hidden" name="cN" value="<%= request.getAttribute("cN") %>">
                Upload: <input type="file" name="fileName">
                <input type="submit" id="uploadFile" name="uploadFile" value="Upload CSV file">
            </form>
        </td>
    </tr>
</TABLE>
</body>
</html>

额外说明

  • Servlet上的@MultipartConfig注解配置正确,无需修改。
  • 修复后,request.getPart("fileName")可正常获取上传文件的Part对象,通过filePart.getInputStream()即可读取文件内容,不再抛出The request content-type is not a multipart/form-data异常。
  • 此前request.getParameter("fileName")能获取到文件名,是因为浏览器未正确设置enctype时,仅会将文件名作为普通表单参数传递,并不会发送文件内容。

内容的提问来源于stack exchange,提问作者Javajavajava

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 08:32:48