Upload de arquivos - JSF + Hibernate + MySQL
Olá pessoal!
Preciso fazer upload de arquivos (.doc, .pdf, .jpg, etc.) e também poder visualizá-los. Até encontrei um código e coloquei no meu projeto, mas não está funcionando. Como sou iniciante, está difícil resolver o problema. Alguém poderia me ajudar?
Segue código:
ArquivosCliente
ArquivosClienteDAO
ArquivosClienteDAOHibernate
ArquivosClienteRN
ArquivosClienteBean
Formulário Cadastro Arquivo Cliente
Preciso fazer upload de arquivos (.doc, .pdf, .jpg, etc.) e também poder visualizá-los. Até encontrei um código e coloquei no meu projeto, mas não está funcionando. Como sou iniciante, está difícil resolver o problema. Alguém poderia me ajudar?
Segue código:
ArquivosCliente
@Entity
public class ArquivosCliente implements Serializable {
private static final long serialVersionUID = -5350255923194238644L;
private Integer codigo;
private String tipodoc;
private String descricao;
private Date datainclusao = new Date();
private Cliente cliente;
@Id
@GeneratedValue
public Integer getCodigo() {
return codigo;
}
public void setCodigo(Integer codigo) {
this.codigo = codigo;
}
public String getTipodoc() {
return tipodoc;
}
public void setTipodoc(String tipodoc) {
this.tipodoc = tipodoc;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
@Temporal(TemporalType.DATE)
public Date getDatainclusao() {
return datainclusao;
}
public void setDatainclusao(Date datainclusao) {
this.datainclusao = datainclusao;
}
@ManyToOne
@JoinColumn(name = "codcliente", nullable = false)
public Cliente getCliente() {
return cliente;
}
public void setCliente(Cliente cliente) {
this.cliente = cliente;
}
@Override
public int hashCode() {
int hash = 7;
hash = 53 * hash + Objects.hashCode(this.codigo);
hash = 53 * hash + Objects.hashCode(this.tipodoc);
hash = 53 * hash + Objects.hashCode(this.descricao);
hash = 53 * hash + Objects.hashCode(this.datainclusao);
hash = 53 * hash + Objects.hashCode(this.cliente);
return hash;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final ArquivosCliente other = (ArquivosCliente) obj;
if (!Objects.equals(this.codigo, other.codigo)) {
return false;
}
if (!Objects.equals(this.tipodoc, other.tipodoc)) {
return false;
}
if (!Objects.equals(this.descricao, other.descricao)) {
return false;
}
if (!Objects.equals(this.datainclusao, other.datainclusao)) {
return false;
}
if (!Objects.equals(this.cliente, other.cliente)) {
return false;
}
return true;
}
}
ArquivosClienteDAO
public interface ArquivosClienteDAO {
public void atualizar(ArquivosCliente arquivosCliente);
public void salvar(ArquivosCliente arquivosCliente);
public void excluir(ArquivosCliente arquivosCliente);
public ArquivosCliente carregar(Integer codigo);
public List<ArquivosCliente> listar();
}
ArquivosClienteDAOHibernate
public class ArquivosClienteDAOHibernate implements ArquivosClienteDAO {
private Session sessao;
public void setSessao(Session sessao) {
this.sessao = sessao;
}
@Override
public void atualizar(ArquivosCliente ac) {
this.sessao.update(ac);
}
@Override
public void excluir(ArquivosCliente ac) {
this.sessao.delete(ac);
}
@Override
public void salvar(ArquivosCliente ac) {
this.sessao.save(ac);
}
@Override
public ArquivosCliente carregar(Integer codigo) {
return (ArquivosCliente) this.sessao.get(ArquivosCliente.class, codigo);
}
@SuppressWarnings("unchecked")
@Override
public List<ArquivosCliente> listar() {
return this.sessao.createCriteria(ArquivosCliente.class).list();
}
}
ArquivosClienteRN
public class ArquivosClienteRN {
private final ArquivosClienteDAO arquivosClienteDao;
public ArquivosClienteRN() {
this.arquivosClienteDao = DAOFactory.criarArquivosClienteDao();
}
public void excluir(ArquivosCliente ac) {
this.arquivosClienteDao.excluir(ac);
}
public void salvar(ArquivosCliente ac) {
Integer codigo = ac.getCodigo();
if (codigo == null || codigo == 0) {
this.arquivosClienteDao.salvar(ac);
} else {
this.arquivosClienteDao.atualizar(ac);
}
}
public List<ArquivosCliente> listar() {
return this.arquivosClienteDao.listar();
}
public ArquivosCliente carregar(Integer codigo) {
return this.arquivosClienteDao.carregar(codigo);
}
}
ArquivosClienteBean
@ManagedBean(name = "arquivosClienteBean")
@RequestScoped
public class ArquivosClienteBean {
private ArquivosCliente arquivosCliente = new ArquivosCliente();
private List<ArquivosCliente> lista;
private static byte[] arquivo;
private static String nomeArquivo;
public void uploadAttachment(FileUploadEvent event){
UploadedFile file = event.getFile();
ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
String txtField = ec.getRequestParameterMap().get("myform:txtField");
String filePath = ec.getRealPath(String.format("/tmp/%s",file.getFileName()));
try {
FileOutputStream fos = new FileOutputStream(filePath);
fos.write(file.getContents());
fos.flush();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,String.format("Arquivo carregado: %s ", file.getFileName()),
String.format("Mensagem: %s", txtField)));
}
public String novo() {
this.arquivosCliente = new ArquivosCliente();
return "/restrito/cadastrararquivoscliente";
}
public String editar() {
return "/restrito/cadastrararquivoscliente";
}
public String salvar() {
FacesContext facesContext = FacesContext.getCurrentInstance();
ArquivosClienteRN arquivosClienteRN = new ArquivosClienteRN();
arquivosClienteRN.salvar(this.arquivosCliente);
FacesMessage facesMessage = new FacesMessage("Arquivo cadastrado com sucesso!");
facesContext.addMessage(null, facesMessage);
return null;
}
public String excluir() {
ArquivosClienteRN arquivosClienteRN = new ArquivosClienteRN();
arquivosClienteRN.excluir(this.arquivosCliente);
this.lista = null;
return null;
}
public ArquivosCliente getArquivosCliente() {
return arquivosCliente;
}
public void setArquivosCliente(ArquivosCliente arquivosCliente) {
this.arquivosCliente = arquivosCliente;
}
public List<ArquivosCliente> getLista() {
if (this.lista == null) {
ArquivosClienteRN arquivosClienteRN = new ArquivosClienteRN();
this.lista = arquivosClienteRN.listar();
}
return lista;
}
}
Formulário Cadastro Arquivo Cliente
<h:form enctype="multipart/form-data" acceptcharset="ISO-8859-1">
<h1>Novo arquivo do cliente</h1>
<p:messages id="messages" autoUpdate="true" closable="true" />
<p:toolbar style="margin-top: 20px">
<p:toolbarGroup>
<p:button value="Novo" outcome="/restrito/cadastrararquivocliente" icon="ui-icon-plusthick"/>
<p:commandButton action="#{arquivosClienteBean.salvar()}" value="Salvar" ajax="false" update="messages" icon="ui-icon-disk"/>
</p:toolbarGroup>
<p:toolbarGroup align="right">
<p:button value="Voltar" outcome="/restrito/cadastrarcliente" icon="ui-icon-arrowreturnthick-1-w"/>
</p:toolbarGroup>
</p:toolbar>
<br/><br/>
<p:panel header="Dados do Arquivo">
<h:inputHidden id="codigo" value="#{arquivosClienteBean.arquivosCliente.codigo}" />
<h:inputHidden id="codcliente" value="#{arquivosClienteBean.arquivosCliente.cliente.codigo}" />
<h:panelGrid columns="2" style="width: 100%; margin-top: 20px" columnClasses="rotulo, campo" cellpadding="3">
<h:outputText value="Cliente:" />
<p:inputText id="cliente" value="#{arquivosClienteBean.arquivosCliente.cliente.nome}" required="true" size="60" />
<h:outputText value="Tipo de Documento:" />
<p:selectOneMenu id="tipo" value="#{arquivosClienteBean.arquivosCliente.tipodoc}" required="true" requiredMessage="Tipo de Documento é obrigatório.">
<f:selectItem itemLabel="CPF" itemValue="CPF" />
<f:selectItem itemLabel="CNPJ" itemValue="CNPJ" />
<f:selectItem itemLabel="RG" itemValue="RG" />
<f:selectItem itemLabel="CNH" itemValue="CNH" />
<f:selectItem itemLabel="CONTRATO SOCIAL" itemValue="CONTRATO SOCIAL" />
<f:selectItem itemLabel="COMPROV. RESIDÊNCIA" itemValue="COMPROV. RESIDÊNCIA" />
<f:selectItem itemLabel="OUTROS" itemValue="OUTROS" />
</p:selectOneMenu>
<h:outputText value="Descrição:" />
<p:inputText id="descricao" value="#{arquivosClienteBean.arquivosCliente.descricao}" required="true" size="50" requiredMessage="Descrição é obrigatória."/>
<h:outputLabel value="Arquivo:" />
<p:fileUpload id="arquivo" update="arquivo" fileUploadListener="#{arquivosClienteBean.editar()}" mode="simple" />
<h:outputLabel/>
</h:panelGrid>
</p:panel>
</h:form>
Sgrandini
Curtidas 0