Le téléchargement de fichiers est une fonction très courante sur le site Web. Vous devez analyser les paramètres de demande directement à l'aide de servlet pour obtenir des fichiers téléchargés, ce qui est assez gênant. Par conséquent, vous choisissez généralement d'utiliser l'outil Open Source Apache, Common-FileUpload. Ce package JAR peut être trouvé sur le site officiel d'Apache, ou sous le dossier Lib de Struts. La fonction du téléchargement de Struts est basée sur cette implémentation.
Common-FileUpload dépend du package Common-IO, vous devez donc également télécharger ce package. Puis l'importez-le sous votre chemin de projet.
Utiliser le code comme suit
package oop.hg.ytu.servlet; Importer java.io.file; Importer java.io.ioException; import java.io.inputStream; Importer java.util.list; Importer javax.servlet.servletException; import javax.servlet.http.httpservlet; Importer javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; import oop.hu.ytu.dao.uploaddomain; import org.apache.commons.fileupload.fileItem; import org.apache.commons.fileupload.disk.diskfileItemfactory; import org.apache.commons.fileupload.servlet.servletFileUpload; La classe publique Téléchargement étend httpServlet {/ ** * Gandage de la demande de téléchargement de l'utilisateur * / private static final SerialVersionUID = 1l; public void doGet (demande httpservletRequest, réponse httpservletResponse) lève ServletException, ioException {// String décrite = request.getParameter ("décrire"); DiskfileItemfactory factory = new DiskFileItemFactory (); @SuppressWarnings ("Deprécation") String path = request.getRealPath ("/ upload"); // SET DISK Buffer Path Factory.SetRepository (nouveau fichier (chemin)); Factory.SetSizetHreshold (1024 * 1024); // Définissez la taille de tampon de création servletFileUpload upload = new ServletFileUpload (Factory); upload.SetSizEMax (-1); // Définissez la taille de la limite de fichiers de téléchargement, -1 Try Unlimited {@SuppressWarnings ("Unchecked") List <FequeItem> list = upload.parseRequest (request); String VA = null; pour (FileItem Item: list) {// String name = item.getFieldName (); if (item.isformfield ()) {// juger s'il s'agit d'un flux de fichiers va = item.getString ("utf-8"); // System.out.println (name + "=" + va); /// request.setAttribute (nom, valeur); } else {string value = item.getName (); // passera le nom de chemin complet int start = value.lastIndexof ("//"); String FileName = Value.SubString (start + 1); // request.setAttribute (nom, nom de fichier); InputStream dans = item.getInputStream (); UploadDomain dao = new uploadDomain (); //Item.Write(New File (realPath, FileName)); int index = filename.LastIndexof ("."); String realFileName = filename.substring (0, index); String type = filename.substring (index + 1); dao.insert (in, realFileName, type, va); // mis dans la base de données}}} catch (exception e) {e.printStackTrace (); }} public void doPost (httpsservletRequest request, httpservletResponse réponse) lève ServletException, ioException {doGet (request, réponse); }} Ici, nous déterminons s'il s'agit du flux ou des paramètres téléchargés dans le formulaire, tels que la soumission d'informations dans la zone de texte, puis les insérer dans la base de données. Le code d'insertion de la base de données est le suivant
package oop.hu.ytu.dao; import java.io.inputStream; import java.sql.connection; Importer java.sql.PreparedStatement; import java.sql.resultSet; import oop.hg.ytu.utils.jdbcutils; / ** * Fournir une prise en charge de téléchargement de fichiers * @Author Administrator * * / public class uploadDomain {/ ** * Mettez le fichier téléchargé dans la base de données * / public void insert (inputStream in, String FileName, String Type, String décriol) lance l'exception {// Écrivez une image à la connexion de la base de données Conn = null; PréparedStatement PS = null; ResultSet rs = null; System.out.println (décrire); essayez {// 2. Établissez une connexion conn = jdbcutils.getConnection (); // 3. Créez une chaîne d'instructions sql = "INSERT IN FILEUPLOAD (fichier, nom de fichier, type, des) valeurs (? ,? ,?)"; ps = conn.preparestatement (SQL); Ps.SetBlob (1, in); ps.SetString (2, nom de fichier); ps.SetString (3, type); ps.SetString (4, décrire); // 4. Exécuter l'instruction ps.ExecuteUpdate (); joindre(); } enfin {jdbcutils.free (rs, ps, conn); }}} Vous pouvez rencontrer la limite de taille de la question du prix de la base de données par défaut. Vous devez modifier la configuration suivante sous My.ini sous MySQL Installation Directory.
[mysqld]
max_allowed_packet = 64m
C'est tout. Bien sûr, faites attention au format d'encodage. Téléchargez le fichier et faites-le. Une autre chose est que l'un de mes noms de colonne est défini pour décrire, et le résultat est que j'ai en conflit avec les mots réservés MySQL, et les informations ne peuvent pas être insérées. Vous devez y prêter attention à l'avenir.
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.