Arquivo em TXT não mostra quando hospedo no servidor linux

3 respostas
M

Bom dia galera, sou programador Delphi e todos os programadores java da empresa saíram. resolvi aceitar o desafio. por isso vou precisar muito da ajuda de vc´s pois não exite ninguém aqui nem para consultar alguma duvida kkkkk. chega de enrolação e vamos ao problema.

Problema: existe um sistema feito em java com jsp. quando rodo na minha maquina local funciona perfeitamente. mas quando rodo no servidor ele gera erro de permissão. já sei que o problema é permissão de pasta e tal mas não tenho acesso ao servidor para dar a permissão. preciso apenas saber onde grava e saber alterar a pasta onde grava para passar para o pessoal de redes dar a permissão.

Erro no servidor:

type Exception report

message java.io.FileNotFoundException: relatorio.txt (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: java.io.FileNotFoundException: relatorio.txt (Permission denied)

codigo java:

String  codlote;

try{

codlote = request.getParameter(lote).toString();

}catch(NullPointerException ex){

codlote = “”;

}

mLote  objMLote = new mLote((conexao)request.getSession().getAttribute(conexao));

Vector cartoes = objMLote.listaCartaoLoteRelatorioPDF(String.valueOf(codlote));

Vector cartao = new Vector();

if(cartoes.size()>0){
String numLote="",numCartao="",saida="",numLoteAux="";

saida = "Lote Cartão\r\n";
for (int i = 0 ; i < cartoes.size(); i++){
    
	cartao = (Vector)cartoes.get(i);
    numLote = cartao.get(0).toString();
    numCartao = cartao.get(1).toString();
    if ((i==0) || 
    		(!numLoteAux.equals(numLote))){
    	numLoteAux=numLote;
    	saida = "Lote: "+numLote+"\r\n";
    	saida += "Cartões\r\n";
    }
    saida += numCartao+"\r\n";
}

objMLote.downloadPdf(saida,“relatorio.txt”,response);

eu não sei onde ele grava o arquivo. sei que ele cria em memoria, mas para mostrar acho que ele precisa escrever pois é onde está gerando o erro. na minha maquina quando copilo ele grava em C:\Users\marcelo.guimaraes\eclipse\jee-neon\eclipse.

3 Respostas

staroski

Você não postou o código do método downloadPdf, mas provavelmente ele está gravando no diretório corrente da sua aplicação, já que o caminho é somente "relatorio.txt".

M
public void downloadPdf(String saida,String nomArquivo,HttpServletResponse response) throws IOException{

FileOutputStream fos = new FileOutputStream(nomArquivo);

fos.write(saida.getBytes());

File f = new File(nomArquivo);

byte[] content = read(f);

response.addHeader( Content-Disposition,

attachment; filename= + nomArquivo );

response.setContentType( application/octet-stream );

// FileOutputStream outStream = getResponse().getOutputStream();

ServletOutputStream outStream = response.getOutputStream();

try {

outStream.write( content );

outStream.flush();

} finally {

outStream.close();

}

}

Mas como coloco um caminho no código?

staroski

Viu? Você abre o FileOutputStream simplesmente informando o nome do arquivo, como é só um nome e não um caminho absoluto, ele vai criar o arquivo no diretório onde sua aplicação está executando.

Como é que você colocou o nome do arquivo?
É da mesma forma.

Criado 5 de setembro de 2017
Ultima resposta 5 de set. de 2017
Respostas 3
Participantes 2