Imagem nao vai no caminho certo [RESOLVIDO]

1 resposta
F

galera…alguem poderia me ajudar?

estou tentando inserir um arquivo (imagem) em uma pasta
por exemplo
webcontent/imagens, porem quando coloco o caminho /pasta
ele nao vai para a pasta e sim coloca o nome da imagem como pastafundo.jpg

Segue o codigo:

ServletContext ctx = getServletContext();  
 String path = ctx.getRealPath( "/" );  	
 String savePath = path;   // o diretório onde os arquivos carregados serão salvos  

 String filename = "";
 ServletInputStream in = request.getInputStream(); //uma referencia do objeto da solicitaçao http onde tem o conteudo do arquivo carregado  

 //o inicio do arquivo carregado  e separado pelo limite e uma sequencia de caracteres
 //de carros de retorno-alimentador de linha ledo o HttpServeltRequest linha a linha
 byte[] line = new byte[4048];  // define um array de byte chamado line
 int i = in.readLine(line, 0, 4048);  //usar o metodo readLine de ServeltInputStream para ler a 1a linha do conteudo do objeto http
 int boundaryLength = i - 2; //o comprimeto atual da linha -2 do que o num de bytes retornado do metodo readLine
 String boundary = new String(line, 0, boundaryLength);   //Descarta os 2 ultimos caracteres da linha  

 //tendo recuperado o limite, entao pode iniciar a extraçao do elemento de valor de formulario, lendo o conteudo do objeto
 // http linha por linha, usando a loop while, ate q ela atinja o final, qdo o medoto readLine retorna -1
  while (i != -1) {
    String newLine = new String(line, 0, i);
    if (newLine.startsWith("Content-Disposition: form-data; name=\"")) {
      String s = new String(line, 0, i-2);//agora pode conseguir o nome de arquivo a partir da string de leitura
      int pos = s.indexOf("filename=\"");
      if (pos != -1) {
        String filepath = s.substring(pos+10, s.length()-1);
        // navegadores do Windows incluem o caminho completo do cliente,
        // mas Unix / Linux e navegadores de Mac só enviar o arquivo de teste
        // se este é de um navegador para Windows
        pos = filepath.lastIndexOf("\\");
        if (pos != -1)
          filename = filepath.substring(pos + 1);
        else
          filename = filepath;
      }     

      //este é o conteúdo do arquivo
      i = in.readLine(line, 0, 4048);  //depois de conseguir o nome de arquivo, notara os dois pares de caracteres
      i = in.readLine(line, 0, 4048); //carro de retorno-alimentador de linha antes do inico do conteudo do arquivo carregado
      // blank line                  //pois isto chama o metodo readLine duas vezes
      i = in.readLine(line, 0, 4048);     

      ByteArrayOutputStream buffer = new  //depois inicia o conteudo atual do arquivo, que e armazenado em um ByteArrayOutputStream
      ByteArrayOutputStream();
      newLine = new String(line, 0, i); // que continua lendo a linha ate encontrar um outro limite  

      while (i != -1 && !newLine.startsWith(boundary)) {
       // o problema é a última linha do conteúdo do arquivo contém o caractere nova linha.
       // Então, nós precisamos verificar se a linha atual é a última linha
        buffer.write(line, 0, i);
        i = in.readLine(line, 0, 4048);
        newLine = new String(line, 0, i);
      }
      try {
        // salvar o arquivo carregado               //o limite sinaliza o final do arquivo carregado
        RandomAccessFile f = new RandomAccessFile(  //sendo sua etapa e salvar o buffer em um arquivo
          savePath + filename, "rw");
        out.println(filename);
        byte[] bytes = buffer.toByteArray();
        f.write(bytes, 0, bytes.length - 2);
        f.close();
      }
      catch (Exception e) {out.println(e);
      }
    }
    i = in.readLine(line, 0, 4048);     

  } // fim do while

Obrigado pela ajuda

1 Resposta

F

resolvido pessoal

eu estava esquecendo de por o / na ultima pasta que eu queria inserir
vlw

Criado 16 de dezembro de 2011
Ultima resposta 16 de dez. de 2011
Respostas 1
Participantes 1