JavaWeb l'utilisation des communes-fileupload.jar Télécharger les fichiers

Tout d'abord, le chargement de fichier

  Télécharger et télécharger des fichiers, sont caractéristique très courante dans de nombreux systèmes ou logiciels sont souvent utilisés pour télécharger et télécharger des fichiers

  les fichiers téléchargés sont répartis dans les étapes suivantes:

  1, page de couverture exige une forme d'étiquette, qui est une méthode de demandes de poste;

  2, il faut ajouter dans la balise de propriété sous forme ENCTYPE et la valeur d'attribut doit être multipart / form-data valeur;

  3, en utilisant le type d'entrée = balise de fichier sous la forme d'ajouter le fichier téléchargé;

  4, le serveur de code d'écriture (programme Servlet) reçu par le processus de transfert de données.

    notes:

      1. La demande doit être post, parce que la demande get ayant une limite de longueur;

      2. ENCTYPE = multipart / form-data représentent des données présentées sous la forme de plusieurs segments (un seul tableau pour chaque segment de données) épissé, puis envoyé au serveur sous la forme d'un flux binaire;

      3. Les données doivent être reçues en streaming côté serveur;

En second lieu, les instructions pour télécharger les fichiers du protocole HTTP

    

Trois, communes-fileupload.jar API commune 

   Note : package commons-fileupload.jar repose commons-io.jar l'enveloppe, il est nécessaire d'introduire deux packages dans le projet.

  1, API utilisée

Tableau FileItemFactory interface unique de l' usine 
classe de téléchargement de fichiers de ServletFileUpload, pour des données analytiques Ajoutée 
table de type d'élément FileItem, chaque élément de tableau représente 
ServletFileUpload.isMultipartContent booléen (HttpServletRequest demande) détermine si les données en cours est un format téléchargement de multiples étapes, seulement une pluralité de morceaux de données d'utiliser cette méthode liste publique <FileItem> parseRequest (HttpServletRequest demande) téléchargé l' analyse des données, la collecte de la liste de retour contient table individuelle booléenne FileItem.isFormField () pour déterminer l'élément de forme actuelle, que ce soit une seule table ordinaire ou les fichiers téléchargés le type, vrai représente le type ordinaire de forme objet, false télécharger le type de fichier de chaîne FileItem.getFieldName () Obtient la valeur de l' attribut nom de l' élément de forme Chaîne FileItem.getString () Obtient la valeur de l'élément de forme actuelle; Chaîne FileItem.getName () Obtient téléchargement nom de fichier vide FileItem.write (fichier) pour télécharger des fichiers écrits sur l'emplacement du disque dur pointé par l'accès au fichier de paramètres

  

  2, un organigramme

      

Quatrièmement, le cas

  Télécharger le formulaire:

1 <form action = méthode "UploadServlet" = "post" enctype = "multipart / form-data">
 2    用户名: <input type = nom de "texte" = "nom d' utilisateur" /> <br>
 3    照片: <input type = nom "file" = "photo"> <br>
 4    <input type = "submit" value = "上传">
 5 </ form>

 

  les données téléchargées parsing Servlet

1  importation org.apache.commons.fileupload.FileItem;
2  importation org.apache.commons.fileupload.FileItemFactory;
3  importation org.apache.commons.fileupload.disk.DiskFileItemFactory;
4  importation org.apache.commons.fileupload.servlet.ServletFileUpload;
5  
6  import javax.servlet.ServletException;
7  importation javax.servlet.http.HttpServlet;
8  importation javax.servlet.http.HttpServletRequest;
9  importation javax.servlet.http.HttpServletResponse;
10  importation java.io.File;
11  importationjava.io.IOException,
 12 est l'  importation java.util.List,
 13 est  
14  publique  classe UploadServlet extends le HttpServlet {
 15      protégé  vide le doPost (HttpServletRequest demande, la réponse HttpServletResponse) lancers francs ServletException, IOException {
 16          // résoudre la distorsion chinoise 
17.          Request.setCharacterEncoding ( " . 8-UTF " )
 18 est  
19.          // 1. abord déterminer si les données charger de multiples morceaux de données (plusieurs segments de données uniquement, le fichier est téléchargé) 
20 est          iF (ServletFileUpload.isMultipartContent (Request)) {
 21 est  
22 est              // Créer classe d'implémentation d'usine FileItemFactory
23 est              un FileItemFactory FileItemFactory = new new DiskFileItemFactory ();
 24              // 2. Créez un outil analyse le téléchargement des données 
25              ServletFileUpload ServletFileUpload = new new ServletFileUpload (FileItemFactory),
 26 est  
27              l'essai {
 28                  // 3. téléchargement de données analytiques, pour donner à chacun des tableau article FiltItem 
29                  Liste <la FileItem> List = servletFileUpload.parseRequest (Request);
 30  
31 est                  // cycle est déterminé, une table pour chaque élément, un type commun, ou le chargement du fichier 
32                  de (la FileItem FileItem: List) {
 33 est  
34 est                      // Formulaire ordinaire Point 
35                      IF(FileItem.isFormField ()) {
 36                          cordes la fieldName = fileItem.getFieldName ();
 37 [                          Chaîne value = fileItem.getString ( "UTF - 8". ),
 38 est  
39                          System.out.println ( "nom d'attribut = item de la table de valeur" + le fieldName);
 40                          System.out.println ( "valeur de table individuelle valeur d'attribut =" + valeur);
 41 est                      } else {
 42 est                          // Télécharger le fichier 
43 est le                          nom String = fileItem.getFieldName ();
 44 est                          Enfilez le fieldName = FileItem .getName ();
45  
46 est                          System.out.println ( "élément de formulaire valeur de l' attribut name =" + nom);
 47                          System.out.println ( "nom de fichier upload =" + le fieldName);
 48  
49                          // écriture des données à l'emplacement spécifié 
50                          fileItem.write ( nouveau nouveau fichier ( "F .: \\" + fileItem.getName ()));
 la figure 51 est                      }
 52 est                  }
 53 est  
54 est              } le cliquet (Exception e) {
 55                  e.printStackTrace ();
 56 est              }
 57 est  
58          }
 59  
60 
61      }

 

  Remarque:

    Un tel téléchargement il y a un petit problème lors du téléchargement de plusieurs fichiers du même type avec le même nom, après avoir téléchargé un fichier remplacera les téléchargements de fichiers d'origine, afin de résoudre ce problème, vous pouvez ajouter millisecondes l'heure actuelle devant le nom du fichier qui est peut.

  Empêcher la couverture du dossier, la banque de données peut être modifiée suite à une telle approche:

fileItem.write (nouveau fichier ( "F: \\" + System.currentTimeMillis () + fileItem.getName ()));

  

 

Je suppose que tu aimes

Origine www.cnblogs.com/niujifei/p/12448294.html
conseillé
Classement