Upload de arquivos em um JSP com o Jakarta Commons-FileUpload, gravando, lendo e dando baixa no bd

[code]
cria uma pagina html

Filtrar Arquivo antes de transmitir via upload Enviar arquivo:

cria classe jsp
upload.jsp
Atenção para minha finalidade usei objetos das minhas classes de persistencia.
Portanto usem seus respectivos objetos para tais finalidades, como gravaçao
no bd, entre outros. Mas a base de processar,ler,obter e gravar as informaçoes necessarias,
estao ai, portanto bons codigos e espero q ajude.

<%@page import=“pmcg.imti.view.Doadoa”%>//classe de persistencia
<%@page import=“org.apache.tomcat.util.http.fileupload.FileItem”%>
<%@page import=“org.apache.tomcat.util.http.fileupload.FileUpload”%>
<%@page import=“org.apache.tomcat.util.http.fileupload.DiskFileUpload”%>
<%@ page
import=“java.io."
import="java.util.

import=“org.apache.commons.fileupload.*”
import=“pmcg.imti.view.DoacaoFacade” //classe de persitencia.
contentType=“text/plain”
%><%
boolean isMultipart = FileUpload.isMultipartContent(request);
if (isMultipart) {
//variáveis para auxiliar a busca no arquivo
String nome = null;
String linha=null;
String linha1=null;
String numero=null;
String linhaValida=null;
String valorPago = null;
String lineDataBaixa = null;
String dataBaixa = null;

	DiskFileUpload upload = new DiskFileUpload();//cria objeto para auxiliar na busca e no processo do arquivo para upload no disco rigido(client)
	List items = upload.parseRequest(request); //obtem os itens para upload
	Iterator iter = items.iterator(); //interação com os intens do upload
	Doadoa doadoa = new Doadoa();//cria objeto do tipo Doadoa para manipulação do beans. ***Objeto Persistente***
	DoacaoFacade baixa = new DoacaoFacade(); //cria objeto do tipo DoacaoFacade para acesso ao metodo de gravação(tipo DAO) **Objeto Persistente**
	
	upload.setSizeMax(50*1024*1024); //define o tamanho maximo do arquivo para upload 50Mb	
	
	/* Processa os itens do upload */
	while (iter.hasNext()) {		
		FileItem item = (FileItem) iter.next();
		nome = item.getName(); //obtem o nome do arquivo
		StringBuffer bn = new StringBuffer();
		bn.append("/"); //define o diretório para gravação do arquivo. Nesse exemplo estou usando a raiz do servidor da minha aplicação
		bn.append(nome); //armazena o nome arquivo para gravação
		/*Cria, lê, converter o arquivo para String pois ele vem em bytes e grava o arquivo no servidor. Ex: /teste.txt*/
		File uploadedFile = new File(bn.toString()); 
		item.write(uploadedFile);
		try {				
	        BufferedReader in = new BufferedReader(new FileReader("/"+nome));//objeto para buscar apenas o valor e numero no arquivo
	        BufferedReader in1 = new BufferedReader(new FileReader("/"+nome));//objeto para buscar a data no arquivo
	        
	        	/*laço percorrendo todos as linhas do arquivo, mas retorna somente a informação requisitada, ou seja, a data */
	        	while (in1.ready()){
	        		//processa cada linha do arquivo
	        		linha1 = in1.readLine();
	        		//apenas a linha 34 me interssa pois eh nela que estah a data de gravacao
	        		lineDataBaixa = linha1.substring(0,2);
	        		if(lineDataBaixa.equals("34")){//testa se eh alinha 34
	        			//busca na linha a data desejada.
	        			dataBaixa = linha1.substring(34,51);
	        			//elimina os espaços em branco
		                dataBaixa = dataBaixa.trim();
	        		}
	        	}
	        	//fecha a conexao do objeto
	        	in1.close();
	            while (in.ready()) {
	                linha = in.readLine();
	                linhaValida = linha.substring(1,2);
	                
	                if(linhaValida.equals("7")){		                
		                //busca apenas o protocolo do 'nosso numero' para dar baixa no bd.
	                	numero = linha.substring(13,18);
		                numero = numero.trim();
		                //converte de String para inteiro
		                doadoa.setNumdoa(Integer.parseInt(numero));
		                //busca na linha corrente o valor pago
		                valorPago = linha.substring(92,110);
		                valorPago = valorPago.trim();
		                //Double nao aceita valor de moeda do tipo: 1.500,00, por isso a necessidade de substituir o caracter usando o replace
		                valorPago = valorPago.replace(".","");
		                valorPago = valorPago.replace(",",".");	
		                //converte de String(1500.00)para Double
		                doadoa.setValpag(Double.parseDouble(valorPago));
		              	//armazena data da baixa percorrida no laço acima			                
		                doadoa.setDatpag(dataBaixa);
		              	//grava numero(protocolo do 'nosso numero'), data e valor
		                baixa.baixaDoacaoAut(doadoa);
		            }		                 
	         }
	        //fecha conexao
	         in.close();
	    
	    /*trata exceção*/
	    } catch (IOException e) {
	    	e.printStackTrace();
	    }
	}		
}

%>[/code]

Amigo, não leve a mal, mas vc acha mesmo que alguém vai se dar ao trabalho de ler esse código da forma como está?

Faça um favor à todos nós, leia esse tópico, depois arrume o código que foi postado e deixe clara qual é a sua dúvida.

Blz? Flw! :thumbup:

faço as palavras de von.juliano as minhas

amigo usa a tag [code]

e tenta explicar sua duvida , cole o erro que esta dando , ninguem vai responder assim.

[]'s

[quote=von.juliano]Amigo, não leve a mal, mas vc acha mesmo que alguém vai se dar ao trabalho de ler esse código da forma como está?

Faça um favor à todos nós, leia esse tópico, depois arrume o código que foi postado e deixe clara qual é a sua dúvida.

Blz? Flw! :thumbup: [/quote]

Foi mal, postei a msg daquela forma por ser novato no forum, mas vlw pela dica, soh para deixar claro, essa nao eh uma duvida, apenas coloquei uma sugestao de solução para uploads de arquivo, que pode servir para alguem, e quem tiver sugestoes de melhorias no codigo fiquem a vontade, pois essa foi uma solução previa q encontrei para resolver meu problema.

Portanto agradeço desde jah as observações.

Everton Barros

hum , poderia ter dado esta explicação qdo posto o código , mas valeu a intenção

[]'s

Sim, a intenção é boa, parabéns pela iniciativa. Na próxima lembre-se de colocar no título algo como “Dica de como fazer tal coisa”. E que bom que vc entendeu que minha resposta foi uma crítica construtiva, tem gente que acha que respostas assim são “não querer ajudar”.

Então vai minha dica pra vc melhorar seu código: Não use scriptlets, e separe a aplicação de forma que parte dela cuide do banco, outra da apresentação… dê uma estudada no padrão MVC.

Blz? Flw! :thumbup:

Eu uso e conheco o modelo MVC, mas como eu disse antes eh apenas uma solução rápida e temporária, quando eu fizer outro codigo mais produtivo e claro eu posto novamente, mas obrigado pela dica.

[quote=ebarros] Atenção para minha finalidade usei objetos das minhas classes de persistencia.
Portanto usem seus respectivos objetos para tais finalidades, como gravaçao
no bd, entre outros. Mas a base de processar,ler,obter e gravar as informaçoes necessarias,
estao ai, portanto bons codigos e espero q ajude.
[/quote]
Você poderia passar a classe Doadoa?

Obrigado.

Amigo com este codigo eu consigo fazer upload de arquivos e videos???

Fala aí ebarros,

Gostei do codigo, muito efeciente!!! Mas se liga… Este upload estarei mandando para o banco de dados ou para o servidor? Desculpa a pergunta é pq eu sou novo aqui, estava precisando muito deste codigo, eu preciso fazer upload de arquivos no banco de dados e busca-los quado necessario, o que mais está faltando aí neste codigo??? Para onde ele envia os arquivos???

Abrç