Na seguinte rotina de download, depois de aparecer a tela salvar como,
está gravando o conteúdo do arquivo vazio.
try
{
String origem = “<a href="http://127.0.0.1:8080/teste/arquivo.txt">http://127.0.0.1:8080/teste/arquivo.txt</a>”;
//neste exemplo estou utilizando endereço fixo
byte[] cache;
URL urlo = new URL(origem);
URLConnection urlCo = urlo.openConnection();
InputStream in = urlo.openStream();
ServletOutputStream out = response.getOutputStream();
int lengthFile = in.available();
cache = new byte[4096];
response.setContentLength(lengthFile);
response.setContentType(“text/text”);
response.setHeader(“Content-Disposition”, “attachment;filename=” + “novo.txt”);
response.setIntHeader(“Content-length”,lengthFile);
int tamanho;
while((tamanho = in.read(cache)) != -1)
{
out.write(cache,0,tamanho);
out.flush();
}
in.close();
out.close();
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
Se ao invés de :
InputStream in = urlo.openStream();//caminho variável
Utilizo a seguinte sintaxe:
InputStream in = new FileInputStream(“c:/arquivo.txt”);//caminho fixo
Dá certo.
Porque quando utilizo:
InputStream in = urlo.openStream();//caminho variável
o conteúdo do stream vai vazio.