Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Neader

Problemas ao pegar caminho da imagem

Recommended Posts

Olá Pessoal,

 

to com um problema aqui, tenho uma aplicação que precisa pegar o caminho completo de uma imagem e para fazer isso estou usando o seguinte código:

 


<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  "http://www.w3.org/TR/html4/loose.dtd">

<html>
 <head>
   <script type="text/javascript">
     function submeteForm1(){
      var campo_oculto = document.getElementById("oculto");
      var campo_file = document.getElementById("arquivo");
      campo_oculto.value = campo_file.value;
      document.form1.submit();
      }
   </script>
 </head>

<body>
  <form name="form1" action="http://localhost:8084/GD_Rural/TesteServlet" method="post">
     <input name="hidden_file" id="oculto" type="hidden"/>
        <p>
          <input id="arquivo" name="file" type="file" size="100" maxlength="100"/>
        </p>
        <p>
          <input name="id" type="text" id="id"/>
          </p>
          <p> </p>
        <p>
           <input type="button" name="Submit" value="Enviar" onclick="submeteForm1()">
         </p>
  </form>
</body>
</html>

 

pórem não estou conseguindo, e aparece o seguinte caminho,

 

urlImagemmmmm = C:\fakepath\DSC02840.JPG

IMAGEM NÃO GRAVADA

C:\fakepath\DSC02840.JPG DSC02840.JPG

 

ja executei a aplicação no Firefox, IE 9 e no Chrome, o resultado foi sempre mesmo.

 

Alguém sabe o que poder ser isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está tentando pegar o caminho de arquivo pelo JS? Se sim, isso não é possível já que isso seria uma falha grande de segurança... Existem outras maneiras de fazer isso, por exemplo, usar o FileSystemObject da Microsoft (Acredito que só funcione no IE).

 

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim eu uso campo hidden junto com um JS para pegar o caminho da imagem para salva-la no banco. Usar essa solução o FileSystemObject não seria interessante pra mim, pois só funcionaria no IE, e preciso de algo que funcione em qualquer browser.

Alguém tem outra solução?

Compartilhar este post


Link para o post
Compartilhar em outros sites

não tem como fazer.

talvez com flash, que possui maior liberdade no pc do cliente. Com javascript é impossível.

Compartilhar este post


Link para o post
Compartilhar em outros sites

com javascript, html e php que são linguagens que eu domino, não conheço nenhuma forma que funcione.

 

[pegar caminho completo da imagem no pc do usuario]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok então, muito obrigado. Vou voltar a quebrar a cabeça mais um pouco. Achei que tinha resolvido o problema de salvar imagens no BD.

Compartilhar este post


Link para o post
Compartilhar em outros sites

para salvar caminhos de arquivos no BD, você nao precisa saber o caminho dele no pc do usuario.

 

se o usuario for alterar o registro, você primeiro verifica se ele enviou outro arquivo.

se ele enviar, você atualiza o nome do arquivo no bd

 

se ele não enviar, você não atualiza, deixa lá oque estava.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É que eu não estou salvando o caminho da imagem no banco, e sim a própria imagem no BD, por isso estou precisando passar o caminho.

Compartilhar este post


Link para o post
Compartilhar em outros sites

na verdade não.

 

uma coisa é uma coisa, e outra coisa é outra coisa.

você pode salvar a propria imagem no banco, e não precisa saber o caminho dela no pc do usuario para isso.

 

qual linguagem server-side você está usando para fazer o upload ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

to usando JSP e um Servlet Java pra gravar no BD. Vou postar os códigos.

 

teste.jsp

 


<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  "http://www.w3.org/TR/html4/loose.dtd">

<html>
 <head>
   <script type="text/javascript">
     function submeteForm1(){
      var campo_oculto = document.getElementById("oculto");
      var campo_file = document.getElementById("arquivo");
      campo_oculto.value = campo_file.value;
      document.form1.submit();
      }
   </script>
 </head>

<body>
  <form name="form1" action="http://localhost:8084/GD_Rural/TesteServlet" method="post">
     <input name="hidden_file" id="oculto" type="hidden"/>
        <p>
          <input id="arquivo" name="file" type="file" size="100" maxlength="100"/>
        </p>
        <p>
          <input name="id" type="text" id="id"/>
          </p>
          <p> </p>
        <p>
           <input type="button" name="Submit" value="Enviar" onclick="submeteForm1()">
         </p>
  </form>
</body>
</html>

 

TesteServlet.java

 


/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/


import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.sistema.banco.ConnectionFactory;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.InputStream;
import java.sql.*;
import javax.imageio.*;
import javax.servlet.ServletOutputStream;
import java.sql.PreparedStatement;
import java.sql.Connection;
import java.sql.SQLException;

/**
*
* @author Felipe
*/
public class TesteServlet extends HttpServlet {

   /**
    * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
    * @param request servlet request
    * @param response servlet response
    * @throws ServletException if a servlet-specific error occurs
    * @throws IOException if an I/O error occurs
    */
   protected void processRequest(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
       response.setContentType("text/html;charset=UTF-8");
       PrintWriter out = response.getWriter();
       try {

           out.println("<html>");
           out.println("<head>");
           out.println("<title>Servlet TesteServlet</title>");
           out.println("</head>");
           out.println("<body>");
           out.println("<h1>Servlet TesteServlet at " + request.getContextPath () + "</h1>");
           out.println("</body>");
           out.println("</html>");

       } finally {
           out.close();
       }
   }


   @Override
   protected void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException
   {
      processRequest(request, response);
   }



   @Override
   protected void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException
   {
         try
      {
           String urlImagem = request.getParameter("hidden_file");
           //String urlImagem = "d:\\DSC00023.jpg"; QUANDO EU SETO O CAMINHO AQUI, ELE GRAVA NO BANCO CERTINHO
           gravarImagem( urlImagem );  

      }
      catch( Exception e ){ e.printStackTrace(); }


   }

public void gravarImagem( String urlImagem ) throws Exception
  {

     System.out.println("urlImagemmmmm = " + urlImagem);
     File file = new File( urlImagem );
     if(file.exists()){
         BufferedImage img = ImageIO.read( file );

         ByteArrayOutputStream b = new ByteArrayOutputStream();
         ImageIO.write( img, "jpg", b );

         byte[] imgArray = b.toByteArray();


         String sql = "INSERT INTO tb_imagens VALUES( NULL, ? )";
         PreparedStatement stm = ConnectionFactory.getConexao().prepareStatement(sql);
         stm.setBytes( 1, imgArray );
         stm.executeUpdate();
         stm.close();
         System.out.println( "Imagem gravada!" );
     }else{
        System.out.println("IMAGEM NÃO GRAVADA");
        System.out.println(file.getPath()+" "+file.getName());
     }


  }



   @Override
   public String getServletInfo() {
       return "Short description";
   }// </editor-fold>

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Javascript

No IE ele retorna o caminho completo.

Porém no FireFox não, por questões de segurança.

Mas esse problema pode ser resolvido com flash; o mesmo

pode resgatar o caminho completo e assim devolvê-lo ao

javascript.

 

Mas ai vem outro problema...

Como???

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.