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

Subir archivo a servidor externo con aplicacion de escritorio

Estas en el tema de Subir archivo a servidor externo con aplicacion de escritorio en el foro de Java en Foros del Web. que mas amigos como les va, pues miren tengo un problemita, necesito por medio de una aplicacion de escritorio subir un archivo de cualquier clase, ...
  #1 (permalink)  
Antiguo 11/07/2011, 09:35
 
Fecha de Ingreso: abril-2010
Ubicación: Cartagena
Mensajes: 19
Antigüedad: 14 años
Puntos: 1
Pregunta Subir archivo a servidor externo con aplicacion de escritorio

que mas amigos como les va, pues miren tengo un problemita, necesito por medio de una aplicacion de escritorio subir un archivo de cualquier clase, osea texto, imagen, zip, etc, de cualquier tipo, el caso es que ya tengo algo, cuando subo un archivo de tipo text lo sube bien y todo funciona bien, pero cando subo una imagen o un zip, osea uno que no es tipo text, no lo logro subir bien, lo que necesito es sacar los datos del archivo para la creacion del nuevo, osea el content, conten-type y cosas asi, luego yo lo mando pa el servidor, osea mando esos datos y el mismo me crea el archivo pero tengo que mandar bien los datos, entonces miren lo que tengo que estoy casi seguro que algo esta mal, pero como nunca habia hecho esto y solo encuentro respuesta con servidores locales o usando libreria externas, que no puedo usar, miren esto es lo que tengo, este es el metodo de un boton cuando es presionado, ademas de esto me baso en la carpeta seleccionada de un jtree, pero eso no es importante ahora, lo importante es sacar los datos del archivo que selecciono.
Código:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        TreePath parentPath = this.jTree1.getSelectionPath();
        if(parentPath != null){
            //System.out.println(parentPath.toString());            
        
            JFileChooser fileChooser = new JFileChooser();
            int returnVal = fileChooser.showOpenDialog(null);
            if (returnVal == JFileChooser.APPROVE_OPTION) {
                File file = fileChooser.getSelectedFile();
                FileInputStream fis = null;
                BufferedInputStream bis = null;
                DataInputStream dis = null;
                String cont="";
                try {
                    fis = new FileInputStream(file);

                    // Here BufferedInputStream is added for fast reading.
                    bis = new BufferedInputStream(fis);
                    dis = new DataInputStream(bis);

                    // dis.available() returns 0 if the file does not have more lines.
                    while (dis.available() != 0) {

                        // this statement reads the line from the file and print it to
                        // the console.
                        cont += dis.readLine();
                    }

                    // dispose all the resources after using them.
                    fis.close();
                    bis.close();
                    dis.close();

                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                //Nombre del archivo
                String name = file.getName());
                //Content del archivo
                cont ;
                //Conten-Type
                new MimetypesFileTypeMap().getContentType(file);                

            } else {
                System.out.println("File access cancelled by user.");
            }
        } else//AQUIIIIIIIIIIIIIIIIIIIIIIIIIIII
            JOptionPane.showMessageDialog(null,"Debe escoger la carpeta del arbol donde se subira el archivo");

    }
tal vez vean algunos errores de como pongo el codigo, pero eso no es lo importante, lo importante ahora mismo es que ven esas lineas que estan debajo del ultimo catch en donde pongo los 3 datos que estraigo del archivo que tomo por medio del JFileChooser, entonces luego que le puedo hacer al content para que me sirva, por que siento que le hace falta algo, el content lo necesito en texto pero como en php me imagino qeu aca se le debe aplicar algo para que ese content vaya bien parseado, en php lo hago asi
Código PHP:
$file fopen($_FILES['archivoup']['tmp_name'],'r');
$filesize filesize($_FILES['archivoup']['tmp_name']);
$filecont fread($file,$filesize);
$filename urldecode($_FILES['archivoup']['name']);
$filecontype $_FILES['archivoup']['type']; 
y todo sale bien, pero en java no, subo la foto y cuando la voy a usar no me la previsualiza, entonces pienso que el content de la foto le hace falta algo o no se, ayudenme por favor, ademas si alguien tiene una mejor forma de obtener el conten type se lo agradeceria por que de la forma como lo hago me soporta pocos tipos de archivo y necesito mas, los archivos ofimaticos no me los soporta y no me da el tipo de esos archivos, los coge como binarios y asi con muchos mas, por ultimo si alguien a trabajado con CMIS me seria de mucha ayuda, pero primero lo de subir el archivo, gracias que esten bien
  #2 (permalink)  
Antiguo 12/07/2011, 09:12
 
Fecha de Ingreso: abril-2010
Ubicación: Cartagena
Mensajes: 19
Antigüedad: 14 años
Puntos: 1
Respuesta: Subir archivo a servidor externo con aplicacion de escritorio

nadie sabe? :(
  #3 (permalink)  
Antiguo 12/07/2011, 09:20
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Subir archivo a servidor externo con aplicacion de escritorio

Hola:

En tu código java veo esto

String cont="";
....
cont += dis.readLine();

readLine() lee una linea de texto hasta que encuentra un fin de linea. Y lo metes todo en cont que es String, es decir, texto. Obviamente, si el fichero no es de texto, no hay lineas ni fines de línea ni posiblemente un String sea el mejor sitio para guardarlo, por lo que ese código sólo te funcionará correctamente para ficheros de texto.

Para hacerlo general, no uses ni String ni readLine. Usa un byte[] y usa métodos read(byte[]) que tiene el mismo InputStream.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #4 (permalink)  
Antiguo 12/07/2011, 10:08
 
Fecha de Ingreso: abril-2010
Ubicación: Cartagena
Mensajes: 19
Antigüedad: 14 años
Puntos: 1
Respuesta: Subir archivo a servidor externo con aplicacion de escritorio

amigo gracias por la ayuda, mira hice algo aqui pero esta malo y se ve que esta malo, disculpame pero es que nunca he trabajado con esto asi y no tengo idea, mira lo que hice
Código:
if (returnVal == JFileChooser.APPROVE_OPTION) {
                    File file = fileChooser.getSelectedFile();
                    FileInputStream fis = null;
                    BufferedInputStream bis = null;
                    DataInputStream dis = null;
                    String cont="";
                    byte[] cont2 = null;
                    int bites=0;
                    try {
                        fis = new FileInputStream(file);

                        // Here BufferedInputStream is added for fast reading.
                        bis = new BufferedInputStream(fis);
                        dis = new DataInputStream(bis);

                        bites = dis.read(cont2);
                        System.out.println("Bites: "+bites+" Cont2: "+cont2.length);
                        // dispose all the resources after using them.
                        fis.close();
                        bis.close();
                        dis.close();

                    } catch (FileNotFoundException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
se rompe, a ver que mal hago, gracias
  #5 (permalink)  
Antiguo 12/07/2011, 10:57
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Subir archivo a servidor externo con aplicacion de escritorio

Pues

bytes cont2[] = null

dará siempre error si no haces un new en algún sitio y le das un tamaño al array. Usa el método length() de la clase File para saber el tamaño del fichero y reservar el array de bytes del tamaño adecuado.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #6 (permalink)  
Antiguo 12/07/2011, 11:23
 
Fecha de Ingreso: abril-2010
Ubicación: Cartagena
Mensajes: 19
Antigüedad: 14 años
Puntos: 1
Respuesta: Subir archivo a servidor externo con aplicacion de escritorio

compadre muchas gracias, he resuelto la subida del archivo gracias a usted, muchas gracias, aca pongo el codigo para que vean como fue, no es mas, muchas gracias men., aunque por ultimo mira el parseo que le hize al file.length() pa poder tener el tamaño que le tengo que dar al byte[], funciono, pero no se que tal esta eso ok
Código:
            if(fold.getAllowableActions().getAllowableActions().contains(Action.CAN_CREATE_DOCUMENT)){
                JFileChooser fileChooser = new JFileChooser();
                int returnVal = fileChooser.showOpenDialog(null);
                if (returnVal == JFileChooser.APPROVE_OPTION) {
                    File file = fileChooser.getSelectedFile();
                    FileInputStream fis = null;
                    BufferedInputStream bis = null;
                    DataInputStream dis = null;
                    byte cont2[] = new byte[(int)file.length()];
                    int bites=0;
                    try {
                        fis = new FileInputStream(file);

                        // Here BufferedInputStream is added for fast reading.
                        bis = new BufferedInputStream(fis);
                        dis = new DataInputStream(bis);
                        
                        bites = dis.read(cont2);
                        // dispose all the resources after using them.
                        fis.close();
                        bis.close();
                        dis.close();

                    } catch (FileNotFoundException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }

                   
                } else {
                    System.out.println("File access cancelled by user.");
                }
            }else
                JOptionPane.showMessageDialog(null,"No es posible agregar archivos en este directorio");        

    }

Etiquetas: escritorio, externo, servidor, aplicaciones
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 04:15.