Arquivo no sistema [RESOLVIDO]

2 respostas
P

Pessoal,

Estou com um problema sério...

Tenho um sistema web, ai o usuário escolhe um tipo de busca... e o resultado é gerado um arquivo EXCEL para baixar... uso o SERVLET para receber a lista de pesquisa e montar o arquivo...

SERVLET:
protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		
		// PEGAR A LISTA REENVIADA
		String[] MultiplosDadosAtuais2 = request.getParameterValues("MultiplosDadosAtuais2");
		
		VerificarRegistroGeraRelatorio vr;
		try {
			HttpSession session = request.getSession();
			String login = (String) session
					.getAttribute("loginUsuario");
			vr = new VerificarRegistroGeraRelatorio();

			// MANDAR A LISTA
			vr.CriadorArquivo(MultiplosDadosAtuais2, login);
			
		} catch (BiffException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
	
		HttpSession session = request.getSession();
		NomeArquivoExcel arquivoExcel = new NomeArquivoExcel();
		File arq = arquivoExcel.NomeExcelRelatorio((String) session
				.getAttribute("loginUsuario"));

        if(!arq.exists()){
        	
        	msgRetorno = "Arquivo Inexistente";
    		request.setAttribute("msgRetorno", msgRetorno);
    		request.getRequestDispatcher("geraRelatorioAtual.jsp").forward(
    				request, response);
        } else {
   	
    	
    	{
    		response.setHeader("Content-Disposition", "filename=" + arq.getName());
    		response.setContentType("application/vnd.ms-excel");
    		ServletOutputStream out;
    		out = response.getOutputStream();
    		FileInputStream fin = new FileInputStream(arq);
    		
    		BufferedInputStream bin = new BufferedInputStream(fin);
    		BufferedOutputStream bout = new BufferedOutputStream(out);
    		int ch =0;
    		while((ch=bin.read())!=-1)
    		{
    		bout.write(ch);
    		}
    		
    		bin.close();
    		fin.close();
    		bout.close();
    		out.close();
    		arq.delete();
    		}  
        }
        
	}

E a classe para gerar o arquivo em um diretório criado....:

public File NomeExcel(String login) {
		
	   	//ADICIONA DATA/HORA NO ARQUIVO GERADO
    	GregorianCalendar calendar = new GregorianCalendar();   
        SimpleDateFormat formatador = new SimpleDateFormat("dd' de 'MMMMM' de 'yyyy");     
            	
        File dir = new File(".\\arquivoUpload\\");
        File arq = new File(dir, login+"_Consulta_Coletiva - "+formatador.format(calendar.getTime())+".xls");
        
		return arq;

	}

Só que deve ter algum problema de permissão e as pessoas não estão conseguindo acessar esta pasta... pois não está gerando a mesma...

não sei o que fazer...

2 Respostas

P

o ambiente de produção está em uma maquina virtual Linux...

ele criou o arquivo em opt/apache-tomcat-7.0.29/bin/arquivoUpload

só que parece que não está indo o arquivo para lá...

quando carrego um arquivo, usando os comandos:

FileItemFactory factory = new DiskFileItemFactory();
		ServletFileUpload upload = new ServletFileUpload(factory);

		File dir = new File("arquivoUpload");
		if (dir.mkdir()) {
			System.out.println("Diretório criado com sucesso!");
		} else {
			System.out.println("Erro ao criar ou diretório já criado!");
		}

ele está la gerando e guardando o arquivo de upload... mas no método de consulta para baixar não....

P

CONSEGUI

era uma coisa besta

simplesmente troquei isso:

(".\arquivoUpload\");

por isso:

(“arquivoUpload”);

Criado 2 de outubro de 2013
Ultima resposta 2 de out. de 2013
Respostas 2
Participantes 1