5
respostas

Importar arquivo

Ao tentar importar um arquivo ele está dando este erro no console do navegador tipo 415.

"<html><head><title>Error</title></head><body>Unsupported Media Type</body></html>"

Código html:

<form class="form-horizontal" th:object="${entidade}" method="POST"
                id="codigoForm" enctype="multipart/form-data">
    <br />
    <div class="fileinput fileinput-new input-group"
        data-provides="fileinput">
        <div class="form-control" data-trigger="fileinput">
            <i class="glyphicon glyphicon-file fileinput-exists"></i> <span
                class="fileinput-filename"></span>
        </div>
        <span class="input-group-addon btn btn-default btn-file"> <span
            class="fileinput-new">Selecione o arquivo</span> <span
            class="fileinput-exists">Alterar</span> <input type="file" name="file" />
        </span> <a href="#" class="input-group-addon btn btn-default fileinput-exists"
            data-dismiss="fileinput">Excluir</a>
    </div>
    </form>

Código java:

package br.com.netsoft.rest.todos;

    import javax.validation.Valid;

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.validation.BindingResult;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.multipart.MultipartFile;

    import br.com.netsoft.constantes.ConstantesNotaFiscal;
    import br.com.netsoft.dto.todos.EntidadeDTO;
    import br.com.netsoft.exception.RegraNegocioException;
    import br.com.netsoft.rest.NotaFiscalServicoRecurso;
    import br.com.netsoft.servico.todos.EntidadeServico;

    @RestController
    public class EntidadeRecurso extends NotaFiscalServicoRecurso {

        private static final long serialVersionUID = 4711961142396314697L;

        @Autowired
        private EntidadeServico entidadeServico;

        @PostMapping(value = "/entidadeRecurso/salvar", consumes = "multipart/form-data")
        public String salvar(@RequestParam("file") MultipartFile file, @Valid EntidadeDTO dto, BindingResult result) {
            try {
                if (result.hasErrors()) {
                    return salvar(result.getAllErrors());
                }
                entidadeServico.salvar(dto);
            } catch (RegraNegocioException e) {
                logger.error(e.getMessage());
                return e.getMessage();
            } catch (Exception e) {
                logger.error(e.getMessage());
                return mensagemErro(e);
            }
            return ConstantesNotaFiscal.MENSAGEM_SALVO_SUCESSO;
        }
    }

O que falta será ?

5 respostas

Olá, Guilherme.

O segundo parâmetro do método do Controller é:

 @Valid EntidadeDTO dto

Porém, você não está passando nada além do file no seu formulário.

Será que isso não pode ocasionar um erro?

Na verdade, tenho que passar a entidade, que é o formulário que o usuário digita, por isto tem esta classe DTO.

Não coloquei todo o formulário pois ele é grande.

Descobriu alguma coisa sobre esse erro?

Então na verdade está assim o salvar e funciona, mas sem a importação de arquivo:

public String salvar(@Valid EntidadeDTO dto, BindingResult result)

Será que tenho que fazer dois métodos salvar ? Um para receber o ID da entidade mais o files ?

Alguma Ajuda ?