Manipular byte[] que é retornado por upload no struts

8 respostas
E

Pessoal, estou utilizando o upload de arquivo num jsp juntamente com o FormFile do struts 1.2.7
no caso, o usuário faz o upload do arquivo .txt e eu recebo assim:

FormFile gpxFile = (FormFile) frm.get("importFile");

depois faço:

rota.extractPontosTXT(gpxFile.getFileData()

aonde o método extractPontosTXT() retornaria para mim somente o que me interessa dentro do arquivo. de acordo com a api do struts, o método getFileData() retorna os dados do arquivo na forma byte[]. como eu manipulo esse aray? alguém pode me dar ua sugestão?

8 Respostas

nbluis

que tipos de dados tu tem dentro desses bytes?
que dados são estes.

Lembre-se todo o tipo de dados é composto por um certo número de bytes, tu pode pegar os bytes correspondentes a estes dados e converter no seu tipo tratado novamente…

E

os dados do arquivo .txt. do tipo 2508677 1 170 2312 por exemplo. como eu fria o tratamento? como fazer isso?

nbluis

Hummm…
se são do teu arquivo, certamente são em ASCII.

logo du pode fazer

String s = new String(getFileData())

Pois o objeto string tem um construtor recebendo um array de bytes…

dai tu vai ter uma string para tratamento…

valeu…

E

eu coloquei o array de bytes na variavel data[] e fiz:

String fileStrg = new String (data[]);

mas ele diz q o construtor String(byte) é indefinido…

nbluis

você tem que fazer

String s = new String(data);

sem os colchetes…
assim ele entende dois erros de compilação.
uma que tu quer passar uma posicao do array para o construtor.
e outra que tu não especificou qual a posicao.;

não existe construtor na classe string recebendo 1 byte.

valeu,

E

continua o mesmo erro…

nbluis

Coloque sua parte do codigo deste tratamento para darmos uma olhada…
OBS: não esqueça das tags code

E
ainda não iniciei o tratamento justamente pq não consigo fazer a conversão. as olha só:
public ActionForward save(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		try {
			request.setAttribute("tipos", TipoAreaEnumeration.getInstance());
			DynaValidatorForm frm = (DynaValidatorForm) form;
			FormFile gpxFile = (FormFile) frm.get("importFile");
			
			// TODO Escrever o código aqui
			rota.extractPontosTXT(gpxFile.getFileData());
			rota.save();
			saveActionMessage(request, "message.success");

		} catch (Exception ex) {
			saveActionError(request, ex);
		}
		request.setAttribute("veiculos", ((SecurityPrincipal) request.getUserPrincipal()).getVeiculos());
		return mapping.findForward("edit");
	}
a dificuldade está na implementação do método extractPontosTXT, pois só consigo colocar parâmetro nele como byte[] fornecido pelo método getFileData(). e não dá pra manipular o array byte[].
Criado 28 de março de 2007
Ultima resposta 28 de mar. de 2007
Respostas 8
Participantes 2