Cet article partage le code spécifique pour Java pour implémenter la fonction de téléchargement de fichiers et de téléchargement pour votre référence. Le contenu spécifique est le suivant
Le front-end utilise la propriété ENCTYPE du formulaire de formulaire pour modifier la méthode de livraison de données au formulaire binaire "Stream". Le serveur (servlet) obtient les informations de flux via GetInputStream () et utilise les opérations de base du flux d'E / S Java pour écrire le flux sur une température de fichier temporairement créée par le serveur. Ensuite, utilisez à nouveau les opérations de fichier de base pour lire et intercepter le contenu du fichier temporaire, créer le fichier correspondant en fonction des informations contenant et rédiger les informations spécifiques lues. Lors du téléchargement, recherchez le fichier correspondant sur le serveur en fonction du nom de fichier soumis, puis publiez-le sur la page en fonction du flux de sortie en dehors, puis définissez le type de réponse et l'en-tête de réponse du servlet.
Le processus de transmission spécifique est le suivant:
La partie des informations de flux est:
Le code spécifique est le suivant:
Code frontal:
<html> <éad- head> <meta http-equiv = "content-type" contenu = "text / html; charset = utf-8"> <ititle> insérer le titre ici </ title> <script src = "js / jQuery.js"> </ script> </ head> <body> <format action = "fileupsert" metheth = "post" enctype = "Multiparf <balide> <tr> <td> Veuillez sélectionner le fichier de téléchargement: </ td> <td> <entrée id = "myfile" name = "myfile" type = "file" value = "" /> </ td> <td> <input type = "soumide" value = "upload"> </ td> </ tr> <Tr> <td> $ {info} </td> <a href = "fileloadownservlet? filename = $ {filename}"> $ {filename} </a> </ody> </html>Télécharger la partie servlet (noyau)
@Webservlet ("/ fileupServlet") classe publique FileUpServlet étend httpServlet {private static final long SerialVersionUID = 1l; / ** * @see httpservlet # httpservlet () * / public fileupServlet () {super (); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doPost(request, response); } / ** * @see httpServlet # doPost (requête HttpServletRequest, HttpServletResponse Response) * / Protected void doPost (httpservletRequest, httpservletResponse réponse) lance ServletException, ioException {// too atero-geneteated Method Stubsal InputStream FileSource = request.getInputStream (); // request obtient des informations de flux String TempName = "D: / temp"; // tempfile représente le stockage temporaire du fichier file tempfile = new File (tempName); // créer un fichier temporaire fileoutputStream outpoream = new FileOutputStream (tempfile); // stream steal octet [1024]; int n; while ((n = filesource.read (b))! = -1) // Lire 1024 octets du flux de sortie à chaque fois jusqu'à ce que vous finiriez de lire {outputStream.write (b, 0, n); } outputStream.close (); Filesource.close (); // Fermez le flux d'entrée et de sortie / * Voici des opérations de fichiers spécifiques, principalement pour l'analyse des fichiers temporaires générés temporaires, et la plupart des connaissances sont le contenu du flux d'entrée et de sortie Java! * / RandomaccessFile randomfile = new randomaccessfile (tempfile, "r"); // random stream, spécifiez pour lire des fichiers temporaires, lisez uniquement randomfile.readline (); // lire la première ligne, des données invalides, pas de chaîne str. endIndex = str.lastIndexof ("/" "); // spécifiez l'emplacement de la chaîne de données requise filename = str.substring (beginIndex, endIndex); // intercepter le nom de fichier // repositionner le pointeur de fichier et obtenir le contenu de fichier randomfile.seek (0); // le pointeur de fichier commence à partir du long début de début = 0) while (n = randomfile.readByte ()! = -1 && i <= 4) {if (n == '/ n') {startExt = randomfile.getFilePointer (); i ++; Randomfile.getFilePointer (); getServletConttext (). getRealPath ("/") + "Images"; // Définir le fichier SAVING System.out.Println (realPath); RandomAccessfile = new RandomAccessfile (SaveFile, "RW"); Randomfile.close (); avec succès! "); request.setAttribute (" FileName ", nom de fichier); request.getRequestDispatcher (" / fildeop.jsp "). Forward (demande, réponse);}}Section de téléchargement
Protected void doPost (HttpServLetRequest Request, HttpServletResponse Response) lève ServletException, ioException {// TODO Méthode générée par la méthode Stub String FileName = request.getParameter ("FileName"); String path = getServletContext (). GetRealPath ("/") + "images /"; File file = new File (path + filename); // file if (file.exists ()) {réponse.setContentType ("application / x-msdownload"); // Définit le type de réponse, voici le type de téléchargement Response.SetHeader ("Content-Disposition", "Pièce; FileName = /" "+ FileName +" / ""); // Ouvrir InputStream InputStream = new FileInputStream (fichier); ServletOutputStream OutputStream = Response.getOutputStream (); octet b [] = nouveau octet [1024]; int n; while ((n = inputStream.read (b))! = -1) {outputStream.write (b, 0, n); } outputStream.close (); inputStream.close (); } else {request.setAttribute ("result", "Le fichier n'existe pas! Téléchargement a échoué!"); request.getRequestDispatcher ("/ fildeop.jsp"). Forward (demande, réponse); }}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.