Gravar so nome do arquivo no banco!

24 respostas
F

boa tarde pessoal…

alguém pode me ajudar?
eu estou fazendo um upload de fotos, essas sao gravadas em uma pasta direto no meu projeto… so que eu quero que ao fazer o upload ja grave so o nome do arquivo no banco de dados…

ex:
gravar apenas foto.jpg no banco e nao
c:/webapps/projeto/foto.jpg

alguém ai sabe como posso fazer tal exemplo?

desde já obrigado
Fernando Becker

24 Respostas

Romeo

Se vc usa File ele não possui o método getName()?

(Método porco) subString(19)

F

cara to usando uma biblioteca pronta o JAVABEAN…
respondi tua pergunta??

Romeo

Humm JAVABEAN, desculpa, nunca ouvi falar…

Mas independente disto consulte a API dela para ver se tem um método que pegue apenas o nome do objeto da foto, e não o caminho.

Se o que eu entendi é q vc quer transformar c:/webapps/projeto/foto.jpg em apenas foto.jpg então pode usar subString q resolve

String foto = c:/webapps/projeto/foto.jpg; foto = foto.subString(19);

É isso ou vc quer saber como fazer o Upload e gravar a foto numa pasta?

F

Cara seria isso mesmo so que nao sei fazer… hehe
engracado fiz o mais dificil que é o upload em si e nao consigo gravar so o nome…

vo posta o codigo derrepente tu possa me ajudar…

Class.forName("org.postgresql.Driver");
    Connection con = DriverManager.getConnection("jdbc:postgresql://localhost/imobiliaria", "postgres", "postgres2");
    Statement st = con.createStatement();
    //lista todas as cidades do banco 
    st.executeUpdate("insert into teste_imagem(imagem) values ('"+request.getParameter("tf_imagem")+"')");
		
      if (MultipartFormDataRequest.isMultipartFormData(request))
      {
         // Uses MultipartFormDataRequest to parse the HTTP request.
         MultipartFormDataRequest mrequest = new MultipartFormDataRequest(request);
         String todo = null;
         if (mrequest != null) todo = mrequest.getParameter("todo");
	     if ( (todo != null) && (todo.equalsIgnoreCase("upload")) )
	     {
                Hashtable files = mrequest.getFiles();
                if ( (files != null) && (!files.isEmpty()) )
                {
                    UploadFile file = (UploadFile) files.get("tf_imagem");
                    if (file != null) 
                    	upBean.store(mrequest, "tf_imagem");
					
					out.println("<script>alert('NOME DO ARQUIVO: "+file.getFileName()+"   TAMANHO DO ARQUIVO: "+file.getFileSize()+"     TIPO DO ARQUIVO: "+file.getContentType()+"');</script>"); 
           
		       }
               else
               {
                 out.println("<li>No uploaded files");
               }
	    }
        
		 else out.println("<BR> todo="+todo);
      }
	

}

ah nao to conseguindo gravar nada… ta gravando no banco “null” mas o text aonde eu pego e o campo aonde eu gravo estao corretos!!!

se tu puder me ajudar agradeco…

tiagosarno
File arquivo;        
String nomeArquivo = null;
JFileChooser fcArquivo = new JFileChooser();
fcArquivo.setDialogTitle("Abrir Arquivo ...");
fcArquivo.setApproveButtonText("Abrir");
fcArquivo.setDialogType(javax.swing.JFileChooser.OPEN_DIALOG);        
   if(fcArquivo.showOpenDialog(this) == JFileChooser.APPROVE_OPTION){
      arquivo = fcArquivo.getSelectedFile();
      nomeArquivo = arquivo.getName();      
   }

/*
       DAQUI PARA FRENTE É SÓ COLOCAR A VARIAVEL nomeArquivo
       EM SUA QUERY SQL NA COLUNA DE FOTO E SERÁ GRAVADO
       POR EXEMPLO "minha_foto_3x4.jpg"
*/

Dê uma olhada no código que fiz ai e vê se te serve, espero ter ajudado.
[ HcK ]

Romeo

Então, o negócio que precisa gravar esta aqui.

request.getParameter(“tf_imagem”)

Mas como não sei o tipo que é o objeto request fica dificil te ajudar, pelo que vc comentou deve ser Javabean, certo?

Faça o seguinte, mande o programa ler esta variavel antes de coloca-la no Statement e vejo no q dá, provavelmente ai esta o erro…

Connection con = DriverManager.getConnection(&quot;jdbc:postgresql://localhost/imobiliaria&quot;, &quot;postgres&quot;, &quot;postgres2&quot;); Statement st = con.createStatement(); //lista todas as cidades do banco System.out.println(&quot;imagem = &quot;+request.getParameter("tf_imagem")); // - acrescenta isso st.executeUpdate(&quot;insert into teste_imagem(imagem) values ('&quot;+request.getParameter(&quot;tf_imagem&quot;)+&quot;')&quot;);

se não aparecer o caminho posta a classe do objeto request

F
Pois entao foi isso que eu tentei te explicar, esta retornado "null" simplesmente nao pega o que esta no tf_imagem, é como se estivesse em branco.
 É Javebean sim.

vc tem alguma ideia…

nbluis

JavaBean, JFileChooser, Objeto Request…

Do que estamos falando afinal???

F

nbluis:
JavaBean, JFileChooser, Objeto Request…

Do que estamos falando afinal???

fazer um upload para uma pasta no projeto e gravar apenas o nome do arquivo!!!

da uma olhada no primeiro codigo e o que estamos discutindo!!!

valeu te mais!

nbluis

Ok febeckers, a finalidade eu entendi…
Mas Requests, são utilizados em Servlets, JFileChooser em aplicações gráficas java e JavaBeans como objetos de contexto de JSP’s…

Três coisas diferentes…

Na verdade, perguntei por que todas as idéias que de deram até agora foram totalmente para o escanteio…

O que voce estava utilizando sobre MultipartFormDataRequest está totalemente correto, mas acho que os demais amigos ai estão confundindo tudo…

Valeu…

F

ah e tu podes me ajudar???

valeu…

Romeo

Mas então nbluis, ele disse que essa parte não esta com problema, o problema esta no preparedStatement dele, vc não concorda?

Romeo

Pois entao foi isso que eu tentei te explicar, esta retornado “null” simplesmente nao pega o que esta no tf_imagem, é como se estivesse em branco.
É Javebean sim.

vc tem alguma ideia…

Posta o código da classe do objeto request

F

Pessoal mas esta postado o codigo inteiro…
desde o UPLOAD ate o momento em que grava no banco!!!

esta tudo ai!!!

valeu…

Romeo

Então febeckers, o problema não esta neste método aqui?

request.getParameter("tf_imagem")

a pergunta é, como vc pega e onde vc pega esse parametro? Vc não cria um objeto request, onde está essa declaração? Onde está o método getParameter(String)???

F

entao eu coloquei a conexao depois de fazer o upload, crio uma variavel do tipo string antes de fazer o upload mas ela me retorna “null”…

estou lendo aqui algo que fala que o request.getParamete(“item”) nao funciona com multipart/form-data isso é verdade?? pq se for o meu erro esta ai!!!

{
String imagem = request.getParameter("tf_imagem");
	
		
      if (MultipartFormDataRequest.isMultipartFormData(request))

valeu

Romeo
if (MultipartFormDataRequest.isMultipartFormData(request))

vc comentou que o upload funciona, então deve ter um jeito.

Vc ainda não falou qual o tipo do objeto request, é o q? MultipartFormDataRequest?

Da uma olhada na API dela, se não tiver e estiver usando o eclipse poe o “.” e olha todos os métodos, deve ter algo como getName ou similar…

Acho que todo o problema se resume em achar o método certo que pega o nome…

F

isso mesmo o Upload funciona blz…

é MultipartFormDataRequest…

e nao to usando jsp dentro do DreanWever mesmo (sei que nao é o correto)

te…

Romeo

[color=brown]getParameter

public java.lang.String getParameter(java.lang.String name)

Returns parameter matching to name (see SERVLETS API).

Parameters:
    name - String 
Returns:
    String

[/color]

Essa aqui é a API do getParameter, não sei ele realmente retorna certo.

[color=darkred]getParameterValues

public java.lang.String[] getParameterValues(java.lang.String name)

Returns parameter values array for name (see SERVLETS API).

Parameters:
    name - String 
Returns:
    String[][/color]

essa aqui tb pode te ajudar, ela retorna um array de string.

Mostra pra gente a hora que vc instancia a classe MultipartFormDataRequest request = new MultipartFormDataRequest(parametros, que vi q tem um monte…)

Existe o método getFiles() tb, ve se ele resolve…

http://www.javazoom.net/jzservlets/uploadbean/documentation/api/javazoom/upload/MultipartFormDataRequest.html

F

Cara nao sei… mas achu que so muito burro…

vo posta o codigo assim tal como esta no meu projeto!!

{
String imagem = request.getParameter("tf_imagem");
	
		
      if (MultipartFormDataRequest.isMultipartFormData(request))
      {
         // Uses MultipartFormDataRequest to parse the HTTP request.
         MultipartFormDataRequest mrequest = new MultipartFormDataRequest(request);
         String todo = null;
         if (mrequest != null) todo = mrequest.getParameter("todo");
	     if ( (todo != null) && (todo.equalsIgnoreCase("upload")) )
		 
	     {
		 
		 
                Hashtable files = mrequest.getFiles();
                if ( (files != null) && (!files.isEmpty()) )
                {
                    UploadFile file = (UploadFile) files.get("tf_imagem");
					
                    if (file != null) 
                    	upBean.store(mrequest, "tf_imagem");
					
					//out.println("<script>alert('NOME DO ARQUIVO: "+file.getFileName()+"   TAMANHO DO ARQUIVO: "+file.getFileSize()+"     TIPO DO ARQUIVO: "+file.getContentType()+"');</script>"); 
           
		       }
               else
               {
                 out.println("<li>No uploaded files");
               }
	    }
        
		 else out.println("<BR> todo="+todo);
      }

Class.forName("org.postgresql.Driver");
Connection con = DriverManager.getConnection("jdbc:postgresql://localhost/imobiliaria", "postgres", "postgres2");
Statement st = con.createStatement();
[b]System.out.println("imagem = "+imagem); [/b] <= Para ver o que esta pegando!
st.executeUpdate("insert into imagem_teste(imagem) values ('"+request.getParameter("tf_nome")+"')");	

}
Romeo

[color=darkred]st.executeUpdate(“insert into imagem_teste(imagem) values (’”+request.getParameter(“tf_nome”)+"’)");[/color]

Não passe esse request passe outra coisa. tenta 1 desses aqui:

st.executeUpdate(“insert into imagem_teste(imagem) values (’”+file.getFilename()+"’)");

st.executeUpdate(“insert into imagem_teste(imagem) values (’”+imagem+"’)");

Algumas destas variaveis deve ter o endereço…

Se imagem não funcionar poe

String imagem= request.getFiles().getName();// Não sei se a classe aceita, mas tenta
F

nenhum cara…

file.getFilename()… nem roda…

e o que eu mando gravar a imagem ele grava null, pois esta pegando null

hehe!! complicado!

inté…

F

Pessoal agradeco a todos que me ajudaram a conseguir chegar a essa conclusao…

esta funcionando perfeitamente… gravando o caminho no banco…

{

String imagem = "";	<= Criei uma String sem nada.

		
      if (MultipartFormDataRequest.isMultipartFormData(request))
      {
         
         MultipartFormDataRequest mrequest = new MultipartFormDataRequest(request);
         String todo = null;
		 if (mrequest != null) todo = mrequest.getParameter("todo");
	     if ( (todo != null) && (todo.equalsIgnoreCase("upload")) )
	     {
                Hashtable files = mrequest.getFiles();
				if ( (files != null) && (!files.isEmpty()) )
                {
                    UploadFile file = (UploadFile) files.get("tf_imagem");
                    if (file != null) 
	                   	upBean.store(mrequest, "tf_imagem");
						imagem = file.getFileName(); <= Pego o nome do arquivo
					//out.println("<script>alert('NOME DO ARQUIVO: "+file.getFileName()+"   TAMANHO DO ARQUIVO: "+file.getFileSize()+"     TIPO DO ARQUIVO: "+file.getContentType()+"');</script>"); 
                }
                else
                {
                     out.println("<li>No uploaded files");
                }
	      }
          	else out.println("<BR> todo="+todo);
          }

Class.forName("org.postgresql.Driver");
Connection con = DriverManager.getConnection("jdbc:postgresql://localhost/imobiliaria", "postgres", "postgres2");
Statement st = con.createStatement();

st.executeUpdate("insert into imagem_teste(imagem) values ('"+imagem+"')"); 

Gravo no banco... 

}

muito simples…

Obnrigado para quem me ajudou… hehe
te mais e se alguem estiver com alguma duvida que eu possa ajudar manda uma msg privada

F

Pessoal agradeco a todos que me ajudaram a conseguir chegar a essa conclusao…

esta funcionando perfeitamente… gravando o caminho no banco…

{

String imagem = "";	<= Criei uma String sem nada.

		
      if (MultipartFormDataRequest.isMultipartFormData(request))
      {
         
         MultipartFormDataRequest mrequest = new MultipartFormDataRequest(request);
         String todo = null;
		 if (mrequest != null) todo = mrequest.getParameter("todo");
	     if ( (todo != null) && (todo.equalsIgnoreCase("upload")) )
	     {
                Hashtable files = mrequest.getFiles();
				if ( (files != null) && (!files.isEmpty()) )
                {
                    UploadFile file = (UploadFile) files.get("tf_imagem");
                    if (file != null) 
	                   	upBean.store(mrequest, "tf_imagem");
						imagem = file.getFileName(); <= Pego o nome do arquivo
					//out.println("<script>alert('NOME DO ARQUIVO: "+file.getFileName()+"   TAMANHO DO ARQUIVO: "+file.getFileSize()+"     TIPO DO ARQUIVO: "+file.getContentType()+"');</script>"); 
                }
                else
                {
                     out.println("<li>No uploaded files");
                }
	      }
          	else out.println("<BR> todo="+todo);
          }

Class.forName("org.postgresql.Driver");
Connection con = DriverManager.getConnection("jdbc:postgresql://localhost/imobiliaria", "postgres", "postgres2");
Statement st = con.createStatement();

st.executeUpdate("insert into imagem_teste(imagem) values ('"+imagem+"')"); 

Gravo no banco... 

}

muito simples…

Obnrigado para quem me ajudou… hehe
te mais e se alguem estiver com alguma duvida que eu possa ajudar manda uma msg privada

Criado 25 de março de 2007
Ultima resposta 26 de mar. de 2007
Respostas 24
Participantes 4