HTTP Status 500 - Request processing failed; nested exception is java.lang.RuntimeException: java.io.IOException: java.io.FileNotFoundException:
Recebo essa exception, porem li em alguns forum e não encontrei a solução, me ajudem pf.
HTTP Status 500 - Request processing failed; nested exception is java.lang.RuntimeException: java.io.IOException: java.io.FileNotFoundException:
Recebo essa exception, porem li em alguns forum e não encontrei a solução, me ajudem pf.
Oi Giovanni,
Você precisa criar a pasta para onde será feito o upload e dar permissão para que possa escrever na pasta.
Coloque seu código de upload aqui para ver se acho alguma coisa errada.
Abraço
@Autowired
HttpServletRequest request;
public String gravar(String basePath, MultipartFile arquivo) {
try {
String realPath = request.getServletContext().getRealPath("/" + basePath);
File file = new File(realPath, arquivo.getOriginalFilename());
file.getParentFile().mkdirs();
System.out.println(file.getParent());
if (!file.exists()) {
arquivo.transferTo(file);
}
return basePath + "/" + arquivo.getOriginalFilename();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
Outra coisa que percebi é que o eclipse criou outras pastas como org. e essas coisas. E quando enviamos as imgs de diferentes navegadores não vai e diz que não acha a img. Outra coisa eu crio as pastas e quando vi o eclipse criou um arquivo em vez da pasta. Será que devo criar o projeto novamente?
Oi Giovanni,
Recomendo que faça seu método assim:
public String gravar(String basePath, MultipartFile arquivo) {
try {
String realPath = request.getServletContext().getRealPath("/" + basePath);
File file = new File(realPath + "/" + arquivo.getOriginalFilename());
file.getParentFile().mkdirs();
System.out.println(file.getParent());
if (!file.exists()) {
arquivo.transferTo(file);
}
return basePath + "/" + arquivo.getOriginalFilename();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
Veja se ajuda.
Funcionou sim mas somente no google chrome, tenho uma dúvida como faço para retornar essa imagem? Recuperando o path e jogando na view, como se fosse a imagem do livro cadastrado?
Como é código do servidor, deveria ser independente de navegador. Talvez alguma coisa que tenha feito no html zuou o envio de arquivo.
Mas voltando a sua dúvida, para exibir, é só pegar o path que foi salvo no banco e exibir:
<img src="${produto.sumarioPath}" />
Mas para que isso também funcione, é preciso habilitar o Spring para liberar os arquivos default (imagem, css, js, etc..)
Faremos isso no curso quando formos colocar o Bootstrap mais a frente.
Abraço
Valeu muito obrigado pela atenção! Consegui configurar tudo aqui.