Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro ao fazer upload de arquivos Aula9

Estava fazendo a aula 9 quando me deparei com o seguinte erro: eu ja dei clean no server, ja desinstalei ele , e a criação da pasta do arquivo esta dentro de "src/main/webapp/arquivos-sumario" Obrigado pela atenção

Type Exception Report

Message Request processing failed; nested exception is java.lang.RuntimeException: java.io.IOException: java.io.FileNotFoundException: C:\Users\Vinicius.Vinicius-PC\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\casadocodigo\arquivos-sumario\Desert.jpg (O sistema não pode encontrar o caminho especificado)

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

java.lang.RuntimeException: java.io.IOException: java.io.FileNotFoundException: C:\Users\Vinicius.Vinicius-PC\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\casadocodigo\arquivos-sumario\Desert.jpg (O sistema não pode encontrar o caminho especificado)
    br.com.casadocodigo.loja.infra.FileSaver.write(FileSaver.java:25)
    br.com.casadocodigo.loja.controllers.ProdutosController.save(ProdutosController.java:52)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    java.lang.reflect.Method.invoke(Unknown Source)
    org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
    org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)
    org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:111)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:806)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:729)
    org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
    org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

ProdutosController

[...]
    @RequestMapping(method=RequestMethod.POST)
    public ModelAndView save(MultipartFile sumario, @Valid Produto produto, BindingResult result, RedirectAttributes redirectAttributes) {
        if(result.hasErrors()){
            return form(produto);}
        String path = fileSaver.write("arquivos-sumario", sumario);
        produto.setSumarioPath(path);        
        produtoDAO.save(produto);        
        redirectAttributes.addFlashAttribute("message","Produto cadastrado com sucesso");
        return new ModelAndView("redirect:produtos");
    }

AppWebConfiguration

@EnableWebMvc
@ComponentScan(basePackageClasses={HomeController.class, ProdutoDAO.class, FileSaver.class})
public class AppWebConfiguration {
[...]
@Bean
    public MultipartResolver multipartResolver(){
        return new StandardServletMultipartResolver();
    }
}

ServletSpringMVC

[...]
@Override
    protected void customizeRegistration(Dynamic registration) {
        registration.setMultipartConfig(new MultipartConfigElement(""));
    }

FileSaver

@Component
public class FileSaver {
    @Autowired
    private HttpServletRequest request;

    public String write(String baseFolder, MultipartFile file) {
        try {
            String realPath = request.getServletContext().getRealPath("/"+baseFolder);
            String path = realPath + "/" + file.getOriginalFilename();
            file.transferTo(new File(path));
            return baseFolder + "/" + file.getOriginalFilename();

        } catch (IllegalStateException | IOException e) {
            throw new RuntimeException(e);
        }
    }
}
1 resposta
solução!

Opa, você chegou a criar a pasta no sistema de arquivos? Acho que pode ser isso.