Kommentar: Das Hochladen mehrerer Dateien war in der Vergangenheit möglicherweise kompliziert, aber seit der Entstehung von HTML5 ist es sehr einfach geworden. Nachfolgend finden Sie ein gutes Beispiel, Sie können sich darauf verweisen.
Die Hauptverwendung ist das mehrfache Attribut von <eingabe><Eingabe type = "Datei" multiple />
Hier ist der detaillierte Code der Seite:
<! DocType html>
<html>
<kopf>
<meta http-äquiv = "content-type" content = "text /html; charset = gb2312" />
<title> Lösung 4-5: Senden mehrerer Dateien </title>
</head>
<body>
<Form
action = "http://10.10.25.31:8080/myUpload/UploadPhotoServlet" engTepe = "multiPart/form-data" methode = "post">
<Eingabe type = "Datei" multiple /> <Eingabe
type = "surug" value = "sureichen"> <Eingabe type = "Reset" value = "Reset">
</form>
</body>
</html>
Detaillierter Code des Java -Hintergrunds:
Import Java.io.file;
importieren java.io.ioException;
Java.Text.SimpledateFormat importieren;
import Java.util.calendar;
import Java.util.date;
importieren java.util.list;
importieren javax.servlet.servletException;
import Javax.servlet.http.httpServlet;
importieren javax.servlet.http.httpServletRequest;
importieren javax.servlet.http.httpServletResponse;
import org.apache.commons.FileUpload.FileItem;
import org.apache.commons.FileUpload.FileUploadexception;
import org.apache.commons.FileUpload.disk.diskFileTemfactory;
import org.apache.commons.FileUpload.servlet.servletFileUpload;
/**
* Servlet -Implementierungsklasse UploadphotoServlet
*/
UploadphotoServlet der öffentlichen Klasse erweitert HttpServlet {
private statische endgültige lange Serialversionuid = 1L;
/**
* @see httpServlet#httpServlet ()
*/
public uploadphotoServlet () {
super();
// Todo automatisch generierter Konstruktorstub
}
/**
* @see httpServlet#dagget (httpServletRequest -Anforderung, httpServletResponse -Antwort)
*/
Protected Void DoGet (HttpServletRequest Request, HttpServletResponse -Antwort) löst ServletException aus, IoException {
// Todo automatisch generierte Methode Stub
Dopost (Anfrage, Antwort);
}
/**
* @see httpServlet#Dopost (HttpServletRequest -Anforderung, HttpServletResponse -Antwort)
*/
@Suppresswarnings ("Unbekämpft")
Protected Void Dopost (HttpServletRequest Request, httpServletResponse -Antwort) löst ServletException aus, IoException {
String imagePath = "C: // UploadFile // Bild //"+getEachDate ()+"//"; // Ordner nach Datum generieren
Datei UploadPath = neue Datei (ImagePath);
if (! UploadPath.Exists ()) {
UploadPath.mkdirs ();
}
Datei tmp = neue Datei ("c: // tmp //");
if (! tmp.exists ()) {
tmp.mkdirs ();
}
DiskFileItemfactory factory = new diskFileItemfactory (); // Erstellen Sie eine Festplattenfabrik
factory.setRepository (TMP); // Setzen Sie den Datei -Cache -Pfad
factory.setSizeThreshold (10 * 1096); // Der Standardwert des kritischen Werts des Speicherns von Dateien in Speicher oder temporären Ordnern der Festplatte beträgt 10240, d. H. 10 KB
ServletFileUpload sfu = new servletFileUpload (Fabrik); // Verarbeitungswerkzeuge erstellen
sfu.setsizemax (10*1024*1024); // Die maximale Dateigröße, die vom Server empfangen werden kann, bedeutet -1 keine Obergrenze
String Dateiname = null;
versuchen {
List <Dateinitem> list = sfu.parsequest (Anfrage); // Analyse
if (list.size () <1) {
zurückkehren;
}
für (int j = 0; j <list.size (); j ++) {
FileItem item = list.get (j);
Dateiname = item.getName ();
if (Dateiname.equals ("")) {
request.getRequestDispatcher ("/com/visualizerphoto.jsp"). Forward (Request, Antwort);
zurückkehren;
}
int pos = Dateiname.lastindexof ("."); // Erhalten Sie das Bilddateiformat
if (pos> 0) {
Datum Datum = neuer Datum ();
Dateiname = ImagePath+Date.getTime ()+Dateiname.substring (pos);
}
System.out.println ("item:"+item);
item.write (neue Datei (Dateiname)); // Schreiben Sie an die Festplatte
}
} catch (FileUploadexception e) {
E. printstacktrace ();
} catch (Ausnahme e) {
E. printstacktrace ();
}
}
// 13-11-15
public static String getEachDate () {
Kalender cal = calendar.getInstance ();
Cal.Add (Kalender.Date, 0);
String gestern = new SimpledateFormat ("yyyy-mm-dd") .format (Cal
.GetTime ());
String [] dates = gestern.Split ("-");
String reendate = Daten [0] .Substring (2, 4) + "-" + Daten [1] + "-"
+ Daten [2];
return reendate.trim ();
}
}
Hier ist das Rendering: