【问题标题】:impossible to send multipart/form-data无法发送多部分/表单数据
【发布时间】:2020-04-11 06:50:58
【问题描述】:

我做了一个收到两部分的应用程序:一张图片和一些文字。代码开头是:

  @WebServlet("/App")
@MultipartConfig(fileSizeThreshold=1024*1024*10,    // 10 MB
        maxFileSize=1024*1024*50,       // 50 MB
        maxRequestSize=1024*1024*100)       // 100 MB
public class App extends HttpServlet {

    private static final long serialVersionUID = 205242440643911308L;
    private static final String PREFIX = "stream2file";
    private static final String SUFFIX = ".tmp";

    private static final String UPLOAD_DIR = "uploads";

    protected void doPost(HttpServletRequest req,
                          HttpServletResponse resp) throws ServletException, IOException {

        JsonObject servletResponse = new JsonObject();

        System.out.println("------------------------------");
        System.out.println(req.getContentType());
        System.out.println("------------------------------");
        String text = null;
        String uuid = UUID.randomUUID().toString();
        Properties props = new Properties();
        File dbPropsFile = new File("/config.properties");
        FileReader fileReader = new FileReader(dbPropsFile);
        props.load(fileReader);

        for (Part part : req.getParts()) {
            if(getFileType(part).equals("image")) {

代码失败

for (Part part : req.getParts()) {

如果我使用mvn jetty:run 运行它,它完全可以正常工作,但是当部署到服务器时,它就会崩溃。请帮忙!!!

当尝试执行 System.out.println(req.getContentType()); 时,这在 Tomcat 和 Jetty 服务器上为 null,但在 mvn jetty:run 上具有预期值

【问题讨论】:

  • 你的WEB-INF/web.xml 说什么?

标签: java tomcat post servlets jetty


【解决方案1】:

如果HttpServletRequest.getContentType() 为空,则您的请求不满足@MultipartConfig 的要求,这要求Content-Type 的值为multipart/form-data

确保您的表单首先在网络上正确提交。

也许add some unit tests to your project 以确保 servlet 的行为符合预期,让您将注意力集中在表单提交/请求方面。

【讨论】:

  • 这是 multipartconfig 的问题。现在排序。非常感谢
猜你喜欢
  • 2018-01-04
  • 2020-06-18
  • 2015-02-14
  • 1970-01-01
  • 2020-10-12
  • 1970-01-01
  • 2014-01-10
  • 1970-01-01
  • 2017-10-28
相关资源
最近更新 更多