Cet article partage les codes spécifiques pour le téléchargement multi-fichiers Javaweb et l'emballage et le téléchargement de zip pour votre référence. Le contenu spécifique est le suivant
Les fonctions de téléchargement et de téléchargement de fichiers sont souvent utilisées dans les projets. Cet article résume les scènes de l'environnement Javaweb, les fonctions de téléchargement multi-fichiers et d'emballage et de téléchargement par lots, y compris la réception et les pièces backend.
Tout d'abord, indiquons clairement:
La page ne peut pas être rafraîchie directement la demande AJAX et les demandes de téléchargement et de téléchargement ne peuvent pas être envoyées. Le téléchargement et le téléchargement doivent être mis en œuvre en fonction de la demande de page entière. Cette fonction est généralement obtenue en construisant des formulaires de formulaires dans des projets.
1. Télécharger plusieurs fichiers
Les exigences du projet sont de réaliser la fonction de téléchargement multi-images. Après avoir fait référence aux nombreuses méthodes de plug-in trouvées sur Internet, j'ai décidé de choisir la solution de téléchargement JQuery d'origine. Suivez les étapes ci-dessous pour publier le code spécifique.
1. Partie html (peut être omise de construire avec JS)
<form id = "uploadform" metheth = "post" EncType = "multipart / form-data"> <input type = "file" Hidden name = "fileImage" multiple /> <a href = "javascript: void (0);" rel = "external nofollow" rel = "external nofollow" id = "filesubmit" onclick = "uploadFileMulti ()"> télécharger des informations </a> </ form>
Il y a quelques explications:
1. ENCTYPE = "Multipart / Form-Data" sous forme
2. Dans l'exemple, utilisez des balises pour construire
2. Partie js
var formData = new formData ($ ("# uploadform") [0]); formData.append ("FoldName", "Datumlist"); // Définit le nom du dossier parent FormData.Apend ("Onercode", SelfOrgersCode); formData.append ("DatumType", DatumType); $. (Résultat }, error: function () {showerrortoast ('request a échoué!')}}); Il y a quelques explications ci-dessus:
1. Var formdata = new formData ($ ("# uploadform") [0]);
2. Utiliser FormData.Apend ("OnerCcode", SelfOromCode); Pour ajouter d'autres paramètres
Backend java
MultipartHTTPServLetRequest MRequest = (MultipartHTTPServLetRequest) Request; list <LostipartFile> files = mRequest.getFiles ("FileImage");Il y a quelques explications ci-dessus:
1. Obtenez le multiparthttpservletRequest, correspondant au nom de la balise de fichier
2. Téléchargement par lots des fichiers
Dans ce projet, l'exigence est de télécharger un lot de fichiers en lots. Utilisez ZIP pour compresser le fichier sur le serveur, puis téléchargez le fichier sur le client.
Pour la requête en ligne, l'utilisation de la classe de sortie de fichiers de Java ne peut pas résoudre le problème des noms de fichiers brouillés dans des fichiers compressés. Solution: utilisez le package ant.jar. Lors de la création d'un fichier compressé, vous pouvez définir le format de codage du fichier et le problème des noms de fichiers brouillé sera résolu.
Partie HTML (peut être omise de construire avec JS)
<form id = "uploadform" metheth = "post" EncType = "multipart / form-data"> <div> <input type = "HIDDEN" name = "ordercode" /> <input type = "Hidden" name = "datumtype" /> <a href = "javascript: void (0);" rel = "external nofollow" rel = "external nofollow" onclick = "batchdatumlistdownload ()"> Batchdown </a> </div> </ form>
Partie js
// Fonction de téléchargement de lots BatchDatumListDownload () {var Param = {}; param.datumType = $ ("# datumtypeq"). Val (); if (param.datumType == -1) {param.datumType = null; // requête tout} param.OrderCode = SelfOromCode; $ ("# uploadform input [name = ordercode]"). Val (param.orderCode); $ ("# uploadform input [name = datumType]"). Val (param.datumType); var form = $ ("# uploadform") [0]; form.action = "Order / Datumlist / BatchDownloadDatumlist"; form.method = "post"; form.submit (); // formulaire soumettre}Partie backend
public void batchdownloadDatumlist (DatumlistVo DatumListVo, HttpServletResponse Response) {try {// La liste des fichiers de query <tatumlistVo> Volist = DatumlistService.QueryDatumlists (DatumListVo); // COMPRESS LISTE FILE <FIFIE> FIDES = NOUVEAU ARRAYLIST <> (); for (datumlistVo: volst) {file file = new File (vo.getDatumUrl ()); files.add (fichier); } String filename = datumlistvo.getOrderCode () + "_" + datumlistvo.getDatumType () + ".zip"; // Créez un fichier temporaire pour le téléchargement packagé sur la chaîne côté serveur globalploadpath = ""; String osname = System.getProperty ("os.name"); if (osname.tolowercase (). indexof ("windows")> = 0) {globalUploadPath = globalKeys.getString (globalKeys.windows_upload_path); } else if (osname.tolowercase (). indexof ("linux")> = 0 || osname.tolowercase (). indexof ("mac")> = 0) {globalUploadPath = globalkeys.getString (globalKeys.linux_upload_path); } String outFilePath = GlobalUploadPath + File.separator + FileName; Fichier fichier = nouveau fichier (outFilePath); // File Sortie Stream FileOutputStream outStream = new FileOutputStream (fichier); // Compress Stream ZipOutputStream toClient = new ZipOutputStream (OutStream); // Définit le codage des caractères dans le fichier compressé, sinon il deviendra brouillé surclient.SetEncoding ("gbk"); Ziputil.zipfile (fichiers, toClient); toClient.close (); outstream.close (); Ziputil.downloadzip (fichier, réponse); } catch (exception e) {e.printStackTrace (); }}Parmi eux Ziputil.java
/ ** * Fichiers dans la liste de fichiers compressés * * @param fichiers * @param outputStream * @throws ioException * / public static void zipfile (list files, zipOutStream OutputStream) lève ioException, servlexception {try {int size = filess.size (); // fichiers dans la liste compressée pour (int i = 0; i <size; i ++) {file file = (file) file.get (i); essayez {zipFile (fichier, outputStream); } catch (exception e) {continue; }}} catch (exception e) {throw e; }} / ** * Écrivez le fichier dans le fichier zip * * @param inputfile * @param outputStream * @throws exception * / public static void zipfile (file InputFile, zipOutStream outputStream) lance ioException, servlexception {try {if (inputFile.exists ()) {if (inputfile.fishish FileInputStream (InputFile); BufferedInputStream BinStream = new BufferedInputStream (Instream); Zipentry Entry = new Zipentry (inputFile.getName ()); outputStream.putNextStry (entrée); final int max_byte = 10 * 1024 * 1024; // Le flux maximum est de 10 m de long streamtotal = 0; // la capacité du flux acceptant int streamnum = 0; // Le nombre de flux qui doivent être séparés int LeavesByte = 0; // le nombre de caractères laissés dans le fichier byte [] inoutByte; // Le tableau d'octet accepte les données du fichier streamtotal = binstream.available (); // Le nombre maximum de caractères du flux est obtenu via la méthode disponible StreamNum = (int) math.floor (streamtotal / max_byte); // Le nombre de caractères restants à séparer pour obtenir le fichier de flux LeaveByte = (int) streamtotal% max_byte; // Après avoir divisé le fichier, le numéro restant if (streamNum> 0) {for (int j = 0; j <streamnum; ++ j) {inoutByte = new Byte [max_byte]; // Lisez dans le flux et enregistrez-le dans le tableau BinStream.read (InoutByte, 0, Max_Byte); outputStream.write (inoutByte, 0, max_byte); // Écrivez le flux}} // Écrivez les données du flux restant inoutByte = new Byte [LeaveByte]; BinStream.read (inoutbyte, 0, werstbyte); outputStream.Write (inoutByte); outputStream.closeEntry (); // ferme l'entrée zip actuelle et positionne le flux pour écrire le prochain binstream.close (); // fermer Instream.close (); }} else {Throw New Servlexception ("Le fichier n'existe pas!"); }} catch (ioException e) {throw e; }} / ** * Téléchargez le fichier packaged * * @param fichier * @param réponse * / public static void downloadzip (fichier de fichier, réponse httpservletResponse) {try {// télécharger le fichier en tant que flux. BufferedInputStream fis = new BufferedInputStream (new FileInputStream (file.getPath ())); octet [] buffer = nouveau octet [fis.available ()]; fis.read (tampon); fis.close (); // Réponse de réponse claire. Response.RESET (); OutputStream toClient = new BufferedOutputStream (Response.getOutputStream ()); Response.SetContentType ("Application / Octet-Stream"); Response.SetHeader ("Content-Disposition", "Pixe; FileName =" + File.getName ()); toClient.write (tampon); toClient.flush (); toClient.close (); file.delete (); // Supprimer le fichier côté serveur généré} catch (ioException ex) {ex.printStackTrace (); }} Ce qui précède répond essentiellement aux exigences de téléchargement et de téléchargement de fichiers.
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.