[code]
cria uma pagina html
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]