Foros del Web » Programación para mayores de 30 ;) » Java »

Applet para escoger un archivo

Estas en el tema de Applet para escoger un archivo en el foro de Java en Foros del Web. Hola. Soy nuevo en esto de Java y Applets así que tened paciencia En un apartado de una web que estoy haciendo, tengo un objeto ...
  #1 (permalink)  
Antiguo 16/04/2010, 04:40
 
Fecha de Ingreso: marzo-2008
Mensajes: 383
Antigüedad: 16 años, 1 mes
Puntos: 5
Exclamación Applet para escoger un archivo

Hola.

Soy nuevo en esto de Java y Applets así que tened paciencia

En un apartado de una web que estoy haciendo, tengo un objeto del estilo <input type='file'> para recoger un archivo para luego obtener su ruta completa.

En Javascript no es posible hacer esto porque por seguridad solo muestra en nombre del archivo y su extensión. He leido por ahi que con un Applet podría conseguirlo.

De momento he podido hacer lo siguiente:
Código HTML:
Ver original
  1. <applet code="Applet.class" width="300" height="100">
  2. </applet>

En el archivo Applet.java tengo lo siguiente:
Código JAVA:
Ver original
  1. import java.applet.Applet;
  2.  import java.awt.Graphics;
  3.  import java.io.File;
  4.  
  5.  public class Applet extends Applet{
  6.    public void paint(Graphics g){
  7.        
  8.  
  9.    }
  10.  }

Y ahí me he quedado... Como puedo hacer para que me salga un JFileChoosen, seleccionar un archivo, obtenga la ruta completa y me lo guarde en una variable en Javascript?

Muchas gracias
  #2 (permalink)  
Antiguo 17/04/2010, 22:06
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: Applet para escoger un archivo

¿Para qué quieres todo eso?. Lo pregunto porque tu problema es que necesitas el path completo del fichero accesible desde javascript y quizás haya una forma más sencillo de hacerlo.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 18/04/2010, 04:07
 
Fecha de Ingreso: marzo-2008
Mensajes: 383
Antigüedad: 16 años, 1 mes
Puntos: 5
Respuesta: Applet para escoger un archivo

Hola.

En JavaScript es imposible obtener la ruta completa y en asp.net por más que lo intente tampoco lo consigo.

Finalmente, después de leerme kilos de manuales en java se puede conseguir de esta manera:

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2.       <!-- El javascript, una funcion que obtiene el applet usado su id y llama al metodo cambia -->
  3.       <script>
  4.  
  5.             function doAlert(s) {
  6.  
  7.             alert(s);
  8.             }
  9.  
  10.       </script>
  11.    </head>
  12. <body bgcolor="#dddddd">
  13. <applet id="idApplet" code="localfile.class" archive="localfile.jar"  width="600" height="100">
  14. </applet>
  15. </body>
  16. </html>

Código JAVA:
Ver original
  1. import java.applet.*;
  2. import java.awt.*;
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.text.*;
  6. import java.awt.event.*;
  7. import java.io.*;
  8. import java.net.*;
  9.  
  10. public class localfile extends Applet{
  11.  
  12.     TextField txt = new TextField(60);
  13.     Button btn = new Button("Seleccionar documento");
  14.  
  15.     public localfile(){
  16.  
  17.         Panel p = new Panel();
  18.         Font f;
  19.  
  20.         f = new Font("Arial",Font.BOLD,10);
  21.  
  22.         p.setFont(f);
  23.         p.add(btn);
  24.         p.add(txt);
  25.  
  26.         add("North",p);
  27.  
  28.     }
  29.     public boolean action(Event evt, Object arg)
  30.     {
  31.  
  32.         if (arg.equals("Seleccionar documento")) {
  33.  
  34.             Frame parent = new Frame();
  35.             FileDialog fd = new FileDialog(parent, "Selecciona el documento ISO", FileDialog.LOAD);
  36.             fd.show();
  37.             String selectedItem = fd.getFile();
  38.             if (selectedItem == null) {
  39.                 // no file selected
  40.             } else {
  41.                 File ffile = new File( fd.getDirectory() + File.separator + fd.getFile());
  42.                 txt.setText(fd.getDirectory() + File.separator + fd.getFile());
  43.  
  44.                 String msg = txt.getText();
  45.                 try {
  46.                   getAppletContext().showDocument
  47.                     (new URL("javascript:doAlert(\"" + msg +"\")"));
  48.                   }
  49.                 catch (MalformedURLException me) { }
  50.  
  51.             }
  52.  
  53.         } else return false;
  54.         return true;
  55.     }
  56.  
  57. }



El Applet recoje el ruta completa del archivo seleccionado a través del FileDialog y lo devuelve al JS.

Por si a alguien le interesa... este código funciona :)
  #4 (permalink)  
Antiguo 27/04/2010, 19:40
 
Fecha de Ingreso: marzo-2010
Mensajes: 6
Antigüedad: 14 años
Puntos: 0
Respuesta: Applet para escoger un archivo

Hola cslbcn, en efecto el applet que colocaste si funciona pero con un defecto. La dirección que me muestra el alert de JS es algo mas o menos asi

C:UsuarioCarpetaSub Carpeta\nombre_imagen.jpg

Cuando debería ser así:

C:\Usuario\Carpeta\Sub Carpeta\nombre_imagen.jpg

El defecto es del applet o de mi javascript o de que? Uso la misma función JS que colocaste allí

Saludos!!!
  #5 (permalink)  
Antiguo 11/11/2010, 06:06
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Applet para escoger un archivo

No tengo muy claro de quien es el problema, pero la cuestión es que el javascript elimina del path todos los "\" que no sean dobles "\\". Se puede resovler el problema con el siguiente applet. Si a alguien se le ocurre una forma mejor, por favor que lo indique. A proposito, gracias por la solución cslbcn, eres un maestro.

import java.applet.*;
import java.awt.*;
import java.util.*;
import java.lang.*;
import java.text.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;

public class localfile extends Applet{

TextField txt = new TextField(60);
Button btn = new Button("...");
public localfile(){
FlowLayout lay = (FlowLayout)getLayout();
lay.setHgap(0);
lay.setVgap(0);
Panel p = new Panel();
Font f;
f = new Font("Arial",Font.BOLD,10);
p.setLayout(lay);
p.setFont(f);
p.add(btn);
// p.add(txt);
add("North",p);
}
public boolean action(Event evt, Object arg)
{
if (arg.equals("...")) {
Frame parent = new Frame();
FileDialog fd = new FileDialog(parent, "Selecciona el documento ISO", FileDialog.LOAD);
fd.setVisible(true);
String selectedItem = fd.getFile();
if (selectedItem == null) {
// no file selected
} else {
File ffile = new File( fd.getDirectory() + File.separator + fd.getFile());
txt.setText(fd.getDirectory() + File.separator + fd.getFile());
File ffil = ffile.getParentFile();
String msg = ffile.getName();
while(ffil != null){
msg = ffil.getName()+ File.separator+ File.separator+msg;
ffil = ffil.getParentFile();
}
msg = ffile.getAbsolutePath().substring(0,ffile.getAbsol utePath().indexOf("\\"))+msg;
try {
System.out.println("hola gramola: "+msg);
getAppletContext().showDocument(new URL("javascript:doAlert(\"" + msg +"\")"));
}
catch (MalformedURLException me) { }
}
} else return false;
return true;
}
}

Etiquetas: applet
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:16.