Mudar caminho para salvar arquivo

1 resposta
A

Olá Pessoal

Tenho servlet que salva um arquivo .pdf em uma pasta chamada com o caminho C:\Users\ANDER\eclipse-workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\DEL\documentos

mas eu queria que salvasse em: C:\Users\ANDER\eclipse-workspace\DEL\WebContent\documentos

Servlet:

public class FazUpload extends HttpServlet {
	
	private static final long serialVersionUID = 1L;

	private String pastaDocumentos = null;
	
	@Override
	public void init() throws ServletException {
		super.init();
		
		pastaDocumentos = getServletContext().getInitParameter("pastaDocumentos");
	}
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}
	

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//doGet(request, response);		
	
		//pegando a pasta do projeto
		String pastaProjeto = getServletContext().getRealPath("");
		
		//definir o caminho completo da pasta dos projetos
		String salvarEm = pastaProjeto + File.separator + pastaDocumentos;
		
		System.out.println("Salvando arquivo em: " + salvarEm);
		
		System.out.println("pastaProjeto: "+pastaProjeto);
		
		System.out.println("pastaDocumentos: "+pastaDocumentos);
		
		//verificar se a pasta existe. Caso não exista criar
		File pasta = new File(salvarEm);
		if(!pasta.exists()) {
			//criar a pasta
			pasta.mkdir();
		}
		
		/*Selecionando o arquivo .pdf*/
		try {
			//pegar o arquivo selecionado	
			Part arquivoSelecionado = request.getPart("documento");
			
			String nomeArquivo = arquivoSelecionado.getSubmittedFileName();
			
			//Pegando o total de registros para gravar um arquivo com nome unico
			HorarioDAO horarioDAO = new HorarioDAO();
			String totalAgendamento = horarioDAO.getTotalAgendamento();
			
			//gravar o arquivo no disco (pasta)
			arquivoSelecionado.write(salvarEm + File.separator + totalAgendamento + nomeArquivo);		
			//gravar na base
			Requerente.setNomeParticipantes(salvarEm + File.separator + totalAgendamento + nomeArquivo);
		}catch(IOException e) {
			e.printStackTrace();
			
			Mensagem msg = new Mensagem();
			
			msg.setMensagemErro("<font color='red'> * Erro ao tentar enviar solicitação. Verifique se selecionou corretamente o arquivo com extensão .PDF do seu computador. </font>");
			
			request.setAttribute("mensagem", msg);
			
			request.getRequestDispatcher("registro-espaco.jsp").forward(request, response);
		}

Já tentei definir o caminho direto, sem utilizar o getServletContext().getRealPath(""); , mas ele não salva na String que eu defino

1 Resposta

Lucas_Camara

A servlet está salvando no local correto, pois é o local onde sua aplicação está publicada para ser executada. Porém, o local onde você quer salvar não é adequado por que é onde está o código fonte da aplicação, não serve para esse propósito.

De qualquer forma, o ideal seria vc armazenar esses arquivos num lugar que não seja um caminho do projeto, pq toda vez que você for atualizar o pacote do projeto no servidor, você irá perder os arquivos gerados.

Criado 1 de fevereiro de 2019
Ultima resposta 1 de fev. de 2019
Respostas 1
Participantes 2