Problemas Download (File) ajuda please

2 respostas
juliocesarsrosa

galera estou com um prolema..
tenho um diretório que tem varios arquivos(txt) eu tenho que pegar o arquivo cujo nome é igual ao parametrogetNomeArquivo()
isso ja esta pronto e fazendo.. depois de pegar o arquivo tenho que passa-lo para Base64.encode e depois disso devolver o arquivo(file)
no "responseVO.setArquivoRetorno(???)"..

meus problemas..

estou passando para Base64.encode o conteudo do arquivo.. fica certo porem na hora de devolver o arquivo no "responseVO.setArquivoRetorno(???)" nao sei o que devolver , nao posso devolver a varial que usei para converter Base64 pois ai devolveria soh o conteudo e preciso devolver o arquivo em si....

nao sei se implementei direito esse file.getAbsoluteFile() pq peguei mais nao estou usando mais ...

acabei em perdendo...

vlw galera abraços

private FT05ResponseVO buildResponse(String source, FT05RequestVO requestVO) throws HandleException {
		
		FT05ResponseVO responseVO = new FT05ResponseVO();	
		responseVO.setCodigoRetorno(0);
	

		try {
			LocalFileUtil fileUtil = new LocalFileUtil(source);
			List<File> files = fileUtil.getFiles("");

			byte[] buf = new byte[1024];
			int len = 0;
			
			log.info("Generating FT00 response object");

			for (File file: files) {
				
				InputStream in = null;
				ByteArrayOutputStream out = null;
				
				try {
					in = new FileInputStream(file);
					out = new ByteArrayOutputStream(); 
						
						if(file.getName().contains(requestVO.getNomeArquivo())){
							len=in.read(buf);
							out.write(buf, 0, len);
							out.flush();
							byte buffer[] = new byte[(int) file.length()];  						
							BufferedInputStream input = new BufferedInputStream(new FileInputStream(file.getAbsoluteFile()));  
													
							String arquivo = Base64.encode(out.toByteArray());
							input.read(buf, 0, buf.length);  
			                input.close();  
			            		              			            
	

						}
						
				     responseVO.setArquivoRetorno(???);
			
				} catch (Exception e) {
					log.warn("Fail to include file " + file.getName() + " in responseVO", e);
				} finally {
					try {
						if (in != null) {
							in.close();
						}
						if (out != null) {
							out.close();
						}
					} catch (IOException e) {
						log.warn("Fail to close streams for file " + file.getName(), e);
					}
				}
			}
		} catch (IntegLayerException e) {
			throw new HandleException(IntegLayerErrorCodes.ERROR_BUILDING_RESPONSE, e);
		}
		
		return responseVO;
	}

2 Respostas

rmendes08

Não existe isso de “conteúdo do arquivo” ou “arquivo em si”. Se o que você está fazendo é transmitir dados então você tem que retornar o conteúdo do arquivo. O tal do “arquivo em si” não é nada mais do que uma entrada no sistema de arquivos do SO, não existe nenhuma informação “dentro” do arquivo sobre o sistema de arquivos no qual ele está. Caso contrário, você nunca conseguiria copiar um arquivo do Linux para o Windows por exemplo.

juliocesarsrosa

hunm axo que eu entendi amigo…
eu estava preso ao arquivo mesmo…
mas nao vejo sentido entao em fazer

isso

BufferedInputStream input = new BufferedInputStream(new FileInputStream(file.getAbsoluteFile()));

pq quando faço isso

f(file.getName().contains(requestVO.getNomeArquivo())){  
                            len=in.read(buf);  
                            out.write(buf, 0, len);  
                            out.flush();

ja estou pegando o arquivo…

estou fazendo a mesma coisa nos dois casos ??? vlww amigao !!

Criado 9 de junho de 2011
Ultima resposta 9 de jun. de 2011
Respostas 2
Participantes 2