【问题标题】:Upload file with spring boot使用spring boot上传文件
【发布时间】:2022-02-04 21:55:13
【问题描述】:

我正在尝试做一个简单的文件上传,但它给出了一个错误,下面是我是如何做到的。

表格:

<div class="container">
   <div th:replace="~{base :: titulo('Disparar Holerites')}"></div>
    <div class="card mt-3">
      <form class="card-body needs-validation" action="/holerite/uploadHoleritesFile" method="POST" enctype="multipart/form-data" novalidate>
        <div>
            <label for="arquivoContabilidade" class="form-label">Arquivo Recebido da Contabilidade</label>
            <div class="input-group has-validation mb-4">
                <input accept=".pdf"  type="file" class="form-control" id="arquivoContabilidade" aria-describedby="inputGroupPrepend" required>

            </div>
        </div>
        <button class="btn btn-primary" type="submit">Enviar</button>
      </form>
  </div>

控制器:

@PostMapping(value = "uploadHoleritesFile")
public String uploadHoleritesFile(@RequestParam("arquivoContabilidade") MultipartFile arquivoContabilidade, RedirectAttributes redirectAttributes){
    logger.info("Entramos aqui");
    logger.info("Recebido o arquivo: "+!arquivoContabilidade.isEmpty());
    if(arquivoContabilidade.isEmpty()){
        return "redirect:holerites/passo1";
    }
    try{
        byte[] bytes = arquivoContabilidade.getBytes();
        Path path = Paths.get(COTABILIDADE_FOLDER + arquivoContabilidade.getOriginalFilename());
        Files.write(path, bytes);


    } catch (IOException e){
        e.printStackTrace();
    }
    return "holerites/passo2";


}

错误:

2022-02-04 18:36:41.048 DEBUG 17136 --- [nio-8080-exec-9] o.s.web.servlet.DispatcherServlet : "ERROR" dispatch for POST "/error", parameters={multipart} 2022-02-04 18:36:41.057 调试 17136 --- [nio-8080-exec-9] s.w.s.m.m.a.RequestMappingHandlerMapping:映射到 org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController#errorHtml(HttpServletRequest, HttpServletResponse ) 2022-02-04 18:36:41.077 调试 17136 --- [nio-8080-exec-9] o.s.w.s.v.ContentNegotiatingViewResolver:给定 [text/html, text/html;q=0.8] 2022-02-04 18:36:41.081 调试 17136 --- [nio-8080-exec-9] os.web.servlet.DispatcherServlet:退出“错误”调度,状态 403

【问题讨论】:

    标签: java spring spring-boot file-upload


    【解决方案1】:

    您应该在 html 的输入字段中添加属性 name="arquivoContabilidade"。 Thymeleaf 在将其映射到多部分文件时使用 name 属性。

    例子:

    <input accept=".pdf" name="arquivoContabilidade" type="file" class="form-control" id="arquivoContabilidade" aria-describedby="inputGroupPrepend" required>
    

    另外,我假设你的控制器有注解@RequestMapping("/holerite")

    如果没有,你也必须改变

    @PostMapping(value = "uploadHoleritesFile")
    

    @PostMapping(value = "/holerite/uploadHoleritesFile")
    

    因为你的表单有 &lt;form action="/holerite/uploadHoleritesFile" method="POST"...&gt;

    【讨论】:

    • 我添加了将属性放在这里但还没有工作,在我的控制器中我也使用了这个注释 @RequestMapping("holerite") public class HoleriteController {
    猜你喜欢
    • 2015-05-23
    • 2020-11-28
    • 1970-01-01
    • 1970-01-01
    • 2022-10-07
    • 2017-12-30
    • 1970-01-01
    • 2022-06-14
    • 2017-08-16
    相关资源
    最近更新 更多