How to save image in the database?



  • I'm developing a web application using the play framework, in which I'm finishing performing the CRUD of a user, however it only missing the part where the user saves his profile photos on the record. COmo I have little web experience, I am struggling to save the user's image and then return it to the listing screen.

    This is my class of record:

    public class Funcionarios extends Controller {
    

    public static void form() {
    long funcCount = Agente.count();
    System.out.println(funcCount);
    render(funcCount);
    }

    @AuditoriaOvitrampas
    public static void cadastrar(@Valid Agente funcionario, String senha) throws Exception {

    Agente funcionarioBanco = Agente.find("email = ? or login = ?", funcionario.email, funcionario.login).first();
    
    if (funcionario.id == null) {
        if (funcionarioBanco != null && funcionarioBanco.id != funcionarioBanco.id && funcionarioBanco.foto == null) {
            validation.addError("funcionario.email", "E-mail já existente");
            validation.addError("funcionario.login", "Usuário já existente");
            validation.addError("funcionario.foto", "Imagem já cadastrada");
        }
        if (validation.hasErrors() || !funcionario.senha.equals(senha)) {
            validation.addError("funcionario.senha", "Senha não corresponde");
            params.flash();
            validation.keep();
            form();
        }
        funcionario.senha = Crypto.passwordHash(senha);
        validation.valid("cadastrado com sucesso");
        funcionario.save();
        session.get("usuarioLogado");
        listar(null);
    } else {
        validation.valid("editado com sucesso");
        funcionario.save();
        session.get("usuarioLogado");
        listar(null);
    
    }
    

    }

    public static void detalhesFuncionarios(Long id) {
    Agente f = Agente.findById(id);
    renderTemplate("Funcionarios/detalhesFuncionarios.html", f);
    }
    @AuditoriaOvitrampas
    public static void editarFuncionarios(Long id) {
    Agente f = Agente.findById(id);
    renderTemplate("Funcionarios/form.html", f);
    }

    public static void listar(String parametroBusca) {
    List<Agente> funcionarios = null;
    if (parametroBusca == null) {
    funcionarios = Agente.find("status != ?", Status.INATIVO).fetch();
    }
    render(funcionarios, parametroBusca);
    }
    @AuditoriaOvitrampas
    public static void perfil(Long id){
    String perfil = session.get("usuarioLogado");
    Agente f = Agente.find("login = ?", perfil).first();
    renderTemplate("Funcionarios/perfil.html", f);
    }
    @AuditoriaOvitrampas
    public static void removerFuncionarios(Long id) {
    Agente funcionario = Agente.findById(id);

    if(funcionario.email.equals("admin@admin.com")){
        validation.addError("funcionario.email", "E-mail já existente");
        listar(null);
    }
    funcionario.status = Status.INATIVO;
    funcionario.save();
    flash.success("Removido com sucesso");
    listar(null);
    

    }

    public static void formTrocarSenha() {
    render();
    }

    public static void trocarSenha(String senhaAtual, String novaSenha1, String novaSenha2){
    String senha = session.get("usuarioSenha");
    if(senha.equals(Crypto.passwordHash(senhaAtual))){
    if(novaSenha1.equals(novaSenha2)) {
    Agente f = Agente.findById(Long.parseLong(session.get("usuarioId")));
    f.senha = Crypto.passwordHash(novaSenha1);
    f.save();
    session.put("usuarioSenha", f.senha);
    renderTemplate("Funcionarios/perfil.html", f);
    flash.success("Senha alterada com sucesso!");
    }
    else{
    flash.error("Senhas não são iguais");
    renderTemplate("Funcionarios/formTrocarSenha.html");

        }
    } else {
        flash.error("Senha atual não corresponde a senha do usuário");
        renderTemplate("Funcionarios/formTrocarSenha.html");
    
    }
    

    }
    }

    My model:

    @Entity
    public class Agente extends Model{
    @Required
    public String nome;
    @Required
    public String funcao;
    @Required
    @MinSize(6)
    public String login;
    @MinSize(6)
    @MaxSize(15)
    public String senha;
    @Required
    @Email
    public String email;
    public Blob foto;

    @OneToMany(mappedBy="agente")
    public List<Palheta> palhetas;

    @Enumerated(EnumType.STRING)
    public Status status;

    public Agente() {
    status = Status.ATIVO;
    }

    And my formula HTML:

    <section class="forms">
    <form action="@{funcionarios.cadastrar}" method="post">
    <div class="container-fluid">
    <div class="row">
    <div class="col-lg-6">
    <input type="hidden" name="funcionario.id" value="${f?.id}" />
    <div class="form-group">
    <label>Nome completo:</label> <input type="text"
    name="funcionario.nome" class="form-control"
    value="${flash['funcionario.nome'] ? flash['funcionario.nome'] : f?.nome}">
    <span class="alert-danger">#{error 'funcionario.nome' /}</span>
    </div>

                &lt;div class="form-group"&gt;
                    &lt;label&gt;Email:&lt;/label&gt; &lt;input type="email" name="funcionario.email"
                        class="form-control" placeholder="exemplo@dominio.com"
                        value="${flash['funcionario.email'] ? flash['funcionario.email'] : f?.email}"&gt;
                    &lt;span class="alert-danger"&gt;#{error 'funcionario.email' /}&lt;/span&gt;
                &lt;/div&gt;
    
                &lt;div class="form-group"&gt;
                    &lt;label&gt;Função:&lt;/label&gt; &lt;select name="funcionario.funcao"
                        class="form-control"
                        value="${flash['funcionario.funcao'] ? flash['funcionario.funcao'] : f?.funcao}"&gt;
                        &lt;option&gt;Agente de Endemias&lt;/option&gt;
                        &lt;option&gt;Laboratorista&lt;/option&gt;
                    &lt;/select&gt; &lt;span class="alert-danger"&gt;#{error 'funcionario.funcao' /}&lt;/span&gt;
                &lt;/div&gt;
                &lt;div class="form-group"&gt;
                    &lt;label&gt;Adicionar foto do perfil:&lt;/label&gt; &lt;input type="file"
                        name="funcionario.foto" class="form-control"&gt;
                &lt;/div&gt;
            &lt;/div&gt;
    
            &lt;div class="col-lg-6"&gt;
                #{if f}
                &lt;div class="form-group"&gt;
                    &lt;label&gt;Matrícula:&lt;/label&gt; &lt;input id="loginUsuario" type="text"
                        placeholder="Mínimo 5 caracteres" name="funcionario.login"
                        class="form-control" disabled="disabled"
                        value="${flash['funcionario.login'] ? flash['funcionario.login'] : f?.login}"&gt;
                    &lt;span class="alert-danger"&gt;#{error 'funcionario.login' /}&lt;/span&gt;
                &lt;/div&gt;
                #{/if} #{ifnot f}
                &lt;div class="form-group"&gt;
                    &lt;label&gt;Matrícula:&lt;/label&gt; &lt;input id="loginUsuario" type="text"
                        placeholder="Mínimo 5 caracteres" name="funcionario.login"
                        class="form-control"
                        value="${flash['funcionario.login'] ? flash['funcionario.login'] : f?.login}"&gt;
                    &lt;span class="alert-danger"&gt;#{error 'funcionario.login' /}&lt;/span&gt;
                &lt;/div&gt;
                &lt;div class="form-group"&gt;
                    &lt;label&gt;Senha:&lt;/label&gt; &lt;input type="password"
                        name="funcionario.senha" class="form-control"
                        placeholder="Mínimo 6 caracteres"
                        value="${flash['funcionario.senha'] ? flash['funcionario.senha'] : f?.senha}"&gt;
                    &lt;span class="alert-danger"&gt;#{error 'funcionario.senha' /}&lt;/span&gt;
                &lt;/div&gt;
                &lt;div class="form-group"&gt;
                    &lt;label&gt;Confirmar senha:&lt;/label&gt; &lt;input type="password"
                        placeholder="Mínimo 6 caracteres" name="senha"
                        class="form-control"&gt; &lt;span class="alert-danger"&gt;#{error
                        'senha' /}&lt;/span&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            #{/ifnot}
            &lt;div class="col-lg-12"&gt;
                &lt;button type="submit" class="btn btn-primary"&gt;Salvar&lt;/button&gt;
                &lt;button type="reset" class="btn btn-danger"
                    onclick="window.location.href='/funcionarios/listar';"&gt;
                    Cancelar&lt;/button&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;
    

    </form>

    inserir a descrição da imagem aqui



  • You can create a mongo bench for the images and save the image using the docker mongo. It's pretty simple. And in your main bank you save the id that references the image in the mongo.




Suggested Topics

  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2