Save image format to database

Asked

Viewed 45 times

1

When registering product data in my database it presents the error in getFileType on line 124 follows the error

Line 124

String extensao = nomeDoArquivo.substring(nomeDoArquivo.indexOf('.' + 1));


java.lang.StringIndexOutOfBoundsException: String index out of range: -1
java.lang.String.substring(String.java:1927)
Controler.CadastroProdutos2.getFileType(CadastroProdutos2.java:124)
Controler.CadastroProdutos2.doPost(CadastroProdutos2.java:100)
javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

HTML

 <form action="<c:url value="/produto/salvar" />" method="POST" enctype="multipart/form-data" >

    <div class="row">
        <div class="col-6 col-md-4"></div>
        <div class="col-6 col-md-4"><h2>Cadastro de Produtos</h2></div>
        <div class="col-6 col-md-4"></div>
    </div>

    <div class="container-fluid">
        <div class="conteudo_cadastro"> 

            <div class="row">

                <div class="col-sm-6 col-md-4">
                    Nome do produto:<input type="text" id="nome_produto2" name="nome"><br/><br/>
                </div>

                <div class="col-sm-6 col-md-4">
                    Descrição:<input type="text" id="descricao" name="descricao"><br/><br/>
                </div>

                <div class="col-sm-6 col-md-4">
                    Valor:<input type="text" id="valor" name="valor"><br/><br/>
                </div>
            </div>

            <div class="row">
                <div class="col-sm-6 col-md-4">
                    Cor:<input type="text" id="cor" name="cor"><br/><br/>
                </div>

                <div class="col-sm-6 col-md-4">
                    Marca:<input type="text" id="marca" name="marca"><br/><br/>
                </div>

                <div class="col-sm-6 col-md-4">
                    Tamanho:<input type="text" id="tamanho" name="tamanho"><br/><br/>

                </div>

                <div class="col-sm-6 col-md-4">
                    Parcelas:<input type="text" id="parcelas" name="parcelas"><br/><br/>

                </div>

                <div class="col-sm-6 col-md-4">
                    Tecido:<input type="text" id="tecido" name="tecido"><br/><br/>

                </div>

                <div class="col-sm-6 col-md-4">
                    <input type="file" name="file" id="file"/> <br/><br/>

                </div>

            </div>
        </div>
    </div>

    <button type="submit">Cadastrar</button> 

</form>          

My Servlet responsible for saving data

protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {



    int id = 0;
    String nome = request.getParameter("nome");
    String descricao = request.getParameter("descricao");
    double valor = Double.parseDouble(request.getParameter("valor"));
    String marca = request.getParameter("marca");
    String tamanho = request.getParameter("tamanho");
    int parcelas = Integer.parseInt(request.getParameter("parcelas"));
    String tecido = request.getParameter("tecido");

    Part imagePart = request.getPart("file");
    String tipo = getFileType(imagePart);
    byte[] conteudo = imagePart == null ? new byte[0] : getBytesFromInputStream(imagePart.getInputStream());

    Produtos p = new Produtos(id, nome, descricao, valor, marca, tamanho, parcelas, tecido);
    ImagemProdutos im = new ImagemProdutos(tipo, conteudo);


    ProdutosDAO.instancia().salvar(p, im);

    RequestDispatcher dispatcher = 
   request.getRequestDispatcher("/produtos/listar");
    dispatcher.forward(request, response);

}

private String getFileType(Part part) {
    if (part == null) return "";
    String partHeader = part.getHeader("content-disposition");
    for (String content : partHeader.split(";")) {
        String trimmedContent = content.trim();
        if (trimmedContent.startsWith("filename")) {
            String nomeEntreAspas = trimmedContent.substring(trimmedContent.indexOf('=') + 1);
            String nomeDoArquivo = nomeEntreAspas.trim().replace("\"", "");
            String extensao = nomeDoArquivo.substring(nomeDoArquivo.indexOf('.' + 1));//erro nessa linha
            return extensao;
        }
    }
    return null;
}
  • nomeDoArquivo.substring(nomeDoArquivo.indexOf('.' + 1)). One more should be out of the index nomeDoArquivo.substring(nomeDoArquivo.indexOf('.') + 1).

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.