e ai pessoal finalmente consegui fazer upload, ele salva numa pasta
agora gostaria de saber como faço para guardar esse caminho no banco de dados com JPA
junto com os outros atributos do arquivo
tipo a tabela fica assim:
id serial,
descricao text,
caminho text.
ai como seguir
Na hora que você escrever o arquivo, vc pega o path uai! O.o
Como que vc está salvando?
e ai de novo editei o post
Tenho o seguinte trecho de código ele faz o upload e salva numa pasta
@ManagedBean
@SessionScoped
public class FileUploadController implements Serializable {
private String caminho;
public String getCaminho() {
return caminho;
}
public void setCaminho(String caminho) {
this.caminho = caminho;
}
public void fileUploadAction(FileUploadEvent event) throws IOException {
try {
UploadedFile arq = event.getFile();
InputStream in = new BufferedInputStream(arq.getInputstream());
File file = new File("/home/user/doc/" + arq.getFileName());
caminho = file.getAbsolutePath();
FileOutputStream fout = new FileOutputStream(file);
while (in.available() != 0) {
fout.write(in.read());
}
fout.close();
FacesMessage msg = new FacesMessage("O Arquivo ", file.getName() + " salvo.");
FacesContext.getCurrentInstance().addMessage("msgUpdate", msg);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
ai minha página JSF
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.prime.com.tr/ui">
<h:head>
<title>Página de Upload</title>
</h:head>
<h:body>
<h:form>
<p:fileUpload label="Carregar" allowTypes="*.pdf;" description="Documento" fileUploadListener="#{fileUploadController.fileUploadAction}" />
</h:form>
</h:body>
</html>
agora como faço para por o endereço no banco de dados?
Consegui resolver esse detalhe se alguém for seguir esse tópico vou mandar um jeito que eu resolvi e eu usei Prime Faces
primeiro criei a classe que espelha o banco de dados:
public class Arquivo implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@NotNull
@Column(name = "id")
private Integer id;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 2147483647)
@Column(name = "descricao")
private String descricao;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 2147483647)
@Column(name = "caminho")
private String caminho;
/* gets e set*/
ai tem as outras classes de controle e tem esse método:
public String create() {
try {
getFacade().create(current);
JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/Bundle").getString("ArquivoCreated"));
return prepareCreate();
} catch (Exception e) {
JsfUtil.addErrorMessage(e, ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured"));
return null;
}
}
public void fileUploadAction(FileUploadEvent event) throws IOException {
try {
//Cria um arquivo UploadFile, para receber o arquivo do evento
UploadedFile arq = event.getFile();
InputStream in = new BufferedInputStream(arq.getInputstream());
//copiar para pasta do projeto
File file = new File("/home/ifrs/img/" + arq.getFileName());
//O método file.getAbsolutePath() fornece o caminho do arquivo criado
//Pode ser usado para ligar algum objeto do banco ao arquivo enviado
current.setCaminho(file.getAbsolutePath());
FileOutputStream fout = new FileOutputStream(file);
while (in.available() != 0) {
fout.write(in.read());
}
fout.close();
FacesMessage msg = new FacesMessage("O Arquivo ", file.getName() + " salvo.");
FacesContext.getCurrentInstance().addMessage("msgUpdate", msg);
} catch (Exception ex) {
ex.printStackTrace();
}
}
e o jsf:
<h:form>
<p:fileUpload label="Carregar" allowTypes="*.pdf;" description="Documento" fileUploadListener="#{arquivoController.fileUploadAction}" />
</h:form>
em breve vou mostrar melhor como fazer isso
jaissonduarte tambem estou querendo fazer a mesma coisa salvar o caminho no banco e arquivo no servidor.
poderia mandar seu exemplo completo.
obrigado