Comentario: Cargar múltiples archivos puede haber sido complicado de implementar en el pasado, pero desde la aparición de HTML5, se ha vuelto muy fácil. Hay un buen ejemplo a continuación, puede referirse a él.
El uso principal es el atributo múltiple de <put><input type = "archivo" múltiple />
Aquí está el código detallado de la página:
<! Doctype html>
<html>
<Evista>
<meta http-equiv = "content-type" content = "text /html; charset = gb2312" />
<title> Solución 4-5: Enviar múltiples archivos </title>
</ablo>
<Body>
<formulario
Action = "http://10.10.25.31:8080/myupload/uploadphotoservlet" enctype = "multipart/form-data" método = "post">
<input type = "archivo" múltiple /> <entrada
type = "enviar" value = "enviar"> <input type = "reset" value = "reset">
</form>
</body>
</html>
Código detallado de antecedentes de Java:
import java.io.file;
import java.io.ioException;
import java.text.simpledateFormat;
import java.util.calendar;
import java.util.date;
import java.util.list;
import javax.servlet.servletException;
import javax.servlet.http.httpservlet;
import javax.servlet.http.httpservletRequest;
import javax.servlet.http.httpservletResponse;
importar org.apache.commons.fileUpload.fileitem;
importar org.apache.commons.fileUpload.fileUploadException;
importar org.apache.commons.fileupload.disk.diskfileitemFactory;
importar org.apache.commons.fileUpload.servlet.servletFileUpload;
/**
* CLASE DE IMPLEMENTACIÓN SERVLET COOWPHOTOSERVLET
*/
Public Class uploadPhotoservlet extiende httpservlet {
Private static final Long SerialVersionUid = 1L;
/**
* @see httpservlet#httpservlet ()
*/
Public uploadPhotoservlet () {
súper();
// TODO STUB del constructor generado automático
}
/**
* @see httpservlet#doget (httpservletRequest solicitud, respuesta httpservletResponse)
*/
doget nulo protegido (httpservletRequest, respuesta httpservletreSponse) lanza ServletException, ioexception {
// TODO STUB de método generado automático
dopost (solicitud, respuesta);
}
/**
* @see httpservlet#dopost (solicitud httpservletrequest, respuesta httpservletreSponse)
*/
@SupessWarnings ("sin control")
DOPOST vacío protegido (solicitud httpservletRequest, respuesta httpservletResponse) lanza ServletException, ioexception {
Cadena imagePath = "c: // uploadfile // image //"+getEachDate ()+"//"; // Generar carpetas por fecha
Archivo uploadPath = nuevo archivo (ImagePath);
if (! uploadPath.Exists ()) {
uploadPath.mkDirs ();
}
Archivo tmp = nuevo archivo ("c: // tmp //");
if (! tmp.exists ()) {
tmp.mkdirs ();
}
DiskFileItemFactory factory = new DiskFileItemFactory (); // Crear una fábrica de disco
factory.setRepository (tmp); // Establecer la ruta de caché de archivos
Factory.setsizethreshold (10 * 1096); // El valor crítico predeterminado de guardar archivos en memoria o carpetas temporales del disco es 10240, es decir, 10kb
ServletFileUpload sfu = new ServletFileUpload (fábrica); // Crear herramientas de procesamiento
sfu.setsizeMax (10*1024*1024); // El tamaño máximo del archivo que puede ser recibido por el servidor, -1 significa que no hay límite superior
Cadena filename = null;
intentar {
Lista <SchilItem> list = sfu.parserequest (solicitud); // análisis
if (list.size () <1) {
devolver;
}
for (int j = 0; j <list.size (); j ++) {
Fileitem item = list.get (j);
FileName = item.getName ();
if (filename.equals ("")) {
request.getRequestDIsPatcher ("/com/visualizerphoto.jsp"). Forward (solicitud, respuesta);
devolver;
}
int
if (pos> 0) {
Fecha fecha = nueva fecha ();
FileName = ImagePath+Date.GetTime ()+FileName.Substring (POS);
}
System.out.println ("Elemento:"+elemento);
item.write (nuevo archivo (nombre de archivo)); // Escribir en disco
}
} catch (fileUploadException e) {
E.PrintStackTrace ();
} Catch (Exception e) {
E.PrintStackTrace ();
}
}
// 13-11-15
public static string getEachDate () {
Calendario cal = calendario.getInstance ();
cal.add (calendario.date, 0);
Cadena ayer = new SimpleDateFormat ("yyyy-mm-dd") .Format (Cal
.gettime ());
Cadena [] fechas = ayer.split ("-");
String realDate = fechas [0] .substring (2, 4) + "-" + fechas [1] + "-"
+ fechas [2];
return realDate.trim ();
}
}
Aquí está la representación: