12/01/06                                                                                                

 
   
Estadisticas y contadores web gratis
Manuales Oposiciones
   
    Sigo con Upload ( subir a un servidor )  un fichero en Java II

Ya teniamos los "ladrillos" que nos indicaban en  el estupendo artículo de Adictos al trabajo ahora voy a implementarlo:

1.- Creo un proyecto en NetBeans 4.1 de tipo web y lo llamo upload1 . Borro el index.jsp , no me hace falta

 

2.- Creo un fichero html llamado formUpload.html

 

 
<html>
  <head>
    <title></title>
  </head>
  <body>
  <form method="POST" enctype='multipart/form-data' action="uploadFichero">
Por favor, seleccione el fichero a cargar
<br><input type="file" name="fichero">
<input type="submit">
</form> 

  </body>
</html>

 

 
3.- Creo un servlet llamado uploadFichero.java . Observo un error en import org.apache.commons.fileupload.*;

 

/*
 * uploadFichero.java
 *
 * Created on 4 de agosto de 2003, 22:26
 */

import java.io.*;
import java.net.*;

import javax.servlet.*;
import javax.servlet.http.*;

import org.apache.commons.fileupload.*;
import java.util.*;
/**
 *
 * @author  Roberto Canales
 * @version
 */
public class uploadFichero extends HttpServlet {
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Servlet</title>");
        out.println("</head>");
        out.println("<body>");

        System.out.println("Comenzamos procesamiento ficheros");

        procesaFicheros(request,out);

        out.println("</body>");
        out.println("</html>");

        out.close();
    }


    void depura(String cadena)
    {
        System.out.println("El error es " + cadena);
    }

    public boolean procesaFicheros(HttpServletRequest req, PrintWriter out ) {
        try {
            // construimos el objeto que es capaz de parsear la perición
            DiskFileUpload fu = new DiskFileUpload();

            // maximo numero de bytes
            fu.setSizeMax(1024*512); // 512 K

            depura("Ponemos el tamaño máximo");
            // tamaño por encima del cual los ficheros son escritos directamente en disco
            fu.setSizeThreshold(4096);

            // directorio en el que se escribirán los ficheros con tamaño superior al soportado en memoria
            fu.setRepositoryPath("/tmp");

            // ordenamos procesar los ficheros
            List fileItems = fu.parseRequest(req);

            if(fileItems == null)
            {
                depura("La lista es nula");
                return false;
            }

            out.print("<br>El número de ficheros subidos es: " +  fileItems.size());

            // Iteramos por cada fichero
	    Iterator i = fileItems.iterator();
            FileItem actual = null;
            depura("estamos en la iteración");

            while (i.hasNext())
            {
                actual = (FileItem)i.next();
                String fileName = actual.getName();
                out.println("<br>Nos han subido el fichero" + fileName);

                // construimos un objeto file para recuperar el trayecto completo
                File fichero = new File(fileName);
                depura("El nombre del fichero es " + fichero.getName());

                // nos quedamos solo con el nombre y descartamos el path
                fichero = new  File("c:\\ficherossubidos\\" + fichero.getName());

                // escribimos el fichero colgando del nuevo path
                actual.write(fichero);
            }

        }
        catch(Exception e) {
            depura("Error de Aplicación " + e.getMessage());
            return false;
        }

        return true;
    }

    /** Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
}

 

4.- Importo la libreria o jar commons-fileupload-1.1.jar , que subsanará el error anterior .

Lo importo : File > Upload1 Properties > Libraries > Add Jar/Folder > Camino a commons-fileupload-1.1.jar ... ok

5.-  Construyo el proyecto : Build > Build Main Project

Tienes que tener en el raiz de c el directorio ficherossubidos ( c:\ficherossubidos )

6.- Aquí me paro ya que observo que hay métodos de la clase DiskFileUpload que usa el servlet que están deprecated

por lo que voy a leerme la Doc de el subproyecto http://jakarta.apache.org/commons/fileupload/ ... Continuará


   
  Ejemplo de hoy en clase de html y vbs de el lado de el cliente
 

VALIDACION DE FORMULARIO CON VBS

 
 
<HTML>
<HEAD>
<TITLE>Script 4.23 - A form validation example</TITLE>
<SCRIPT LANGUAGE="VBScript">
<!-- Start hiding VBScript statements
Option Explicit
Dim radioSelected
Dim i
Function process_Order()
If Len(document.myForm.firstName.value) < 1 Then
window.alert("You must provide your first name.")
Exit Function
End If
If Len(document.myForm.lastName.value) < 1 Then
window.alert("You must provide your last name.")
Exit Function
End If
If Len(document.myForm.emailAddress.value) < 1 Then
window.alert("You must provide your email address.")
Exit Function
End If
radioSelected = "No"
For i = 0 To myForm.myRadio.length - 1
If myForm.myRadio(i).Checked = True Then
radioSelected = "Yes"
End If
Next
If radioSelected = "No" Then
window.alert("You must select a newsletter option.")
Exit Function
End If
window.alert("Your registration form looks good. Click on Submit!")
End Function
' End hiding VBScript statements -->
</SCRIPT>
</HEAD>
<BODY>
<CENTER>
<H3>Registration Page</H3>
</CENTER>
<B>Please fill out the following information to register at our web site!</B>
<FORM NAME="myForm" ACTION="mailto:jlf04@yahoo.com" ENCTYPE="text/plain">
<B>What is your first name:</B> <INPUT NAME="firstName" TYPE="text" SIZE="10" MAXLENGTH="30"><P>
<B>What is your last name: </B> <INPUT NAME="lastName" TYPE="text" SIZE="10" MAXLENGTH="30"><P>
<B>What is your email address:</B> <INPUT NAME="emailAddress" TYPE="text" SIZE="20" MAXLENGTH="30"><P>
<B>Select which of our newsletters you'd like to receive:</B><P>
Weekly Update Newsletter: <INPUT NAME="myRadio" TYPE="radio" VALUE="weekly"><BR>
Monthly Recap Newsletter: <INPUT NAME="myRadio" TYPE="radio" VALUE="monthly"><BR>
No Newsletter: <INPUT NAME="myRadio" TYPE="radio" VALUE="none"><BR>
<P><B>What do you think of our web site?</B>
<SELECT NAME="myList">
<OPTION SELECTED VALUE="high">I like it a lot
<OPTION VALUE="medium">Not bad
<OPTION VALUE="low">Needs more work
</SELECT></P>
<B>Would you like to provide any additional information: (Optional)</B><P>
<TEXTAREA NAME="myTextarea" ROWS="5" COLS="50"></TEXTAREA><P>
<INPUT NAME="myReset" TYPE="reset" VALUE="Clear the Form">
<INPUT NAME="mySubmit" TYPE="submit" VALUE="Submit Your Order" 
onClick="window.alert('Thanks for registering with our web site!')">
<INPUT NAME="mybutton" TYPE="button" VALUE="Validate Your Order" onClick="process_Order()">
</FORM>
</BODY>
</HTML>