Le blogueur travaille récemment sur un projet Intranet où les données externes sont accessibles en interne, mais à l'extérieur ne peut pas accéder aux données internes, ce qui entraîne également le téléchargement du fichier. Par conséquent, le blogueur adopte une approche différente et crée un dossier sur le serveur local spécifiquement pour stocker des données téléchargées.
Environnement: JDK, Tomcat
1. Téléchargez des fichiers dans la réception (téléchargez ajax)
<input type = "file" name = "annexurl" id = "annexurl" multiple = "multiple" />
Où multiple = "multiple" est défini pour télécharger plusieurs fichiers
fonction uploadFile () {var files = document.getElementById ("annexurl"). Files; if (files.length! = 0) {var formdata = new formData (); for (var i = 0; i <files.length; i ++) {var file = file [i]; formdata.append (file.name, fichier); } $.ajax({ url: 'cdc/public/saveFiles', type: 'POST', cache: false, data: formData, //This parameter is unique to jquery and is not serialized, because we are not a string in json format, but we need to pass the file processData: false, //Note that we must set contentType:false here, otherwise the string will be passed by default, so that the file cannot be passed through ContentType: false, Success: Function (data) {Save (data.data);}}); } else {Save (); }}} Ici, nous devons utiliser l'objet FormData pour résumer l'objet de fichier. La méthode Save () est utilisée pour enregistrer le chemin du fichier renvoyé après le téléchargement et l'enregistrer dans la base de données pour un téléchargement facile.
2. Recevez des fichiers en arrière-plan et téléchargez-les sur le serveur
// Téléchargez plusieurs fichiers, renvoyez une collection d'objets (adresse de pièce jointe, nom) @RequestMapping (value = "SaveFiles", méthode = requestMethod.post) @ResponseBody public JSONObject SaveFiles (httpservletRequest request, httpservletResponse réponse) {jsonObject JSonObject = new JsonObject (); essayez {request.SetcharAtteRencoding ("utf-8"); } catch (UnportEnCcodingException e) {e.printStackTrace (); } Collection <Sise> Parts = NULL; essayez {parties = request.getParts (); } catch (ioException e) {e.printStackTrace (); } catch (servlexception e) {e.printStackTrace (); } Iterator <part> iterator = part.iterator (); // Collection de noms, retournée à la liste de premier plan <string> list = new ArrayList <> (); while (iterator.hasnext ()) {partie partie = iterator.next (); // Générer le nom de fichier réel réel (unique) // Je ne sais pas pourquoi, le téléchargement de fichiers doit contenir le nom de fichier obtenu, sinon la syntaxe du nom de fichier, du nom du répertoire ou de la balise de volume est incorrecte. Il n'y a pas une telle restriction sur l'image upload // Nom de fichier, enregistrez la base de données et utilisez-la pour afficher le nom de chaîne = part.getName (); String realName = uuid.randomuuid (). ToString () + name; list.add (name + "&&" + realName); ///home/tomcat/apache-tomcat-9.0.1/files String realPath = "d:" + file.separator + "apache-tomcat-8.5.15" + file.separator + "files"; // String realPath = "C:" + file.separator + "xhj224" + file.separator + "logiciel" + file.separator + "apache-tomcat-9.0.1" + file.separator + "file"; // String realPath = file.separator + "home" + file.separator + "tomcat" + file.separator + "apache-tomcat-9.0.1" + file.separator + "files"; Fichier file = nouveau fichier (realPath); // Si le répertoire n'existe pas (! File.isDirectory ()) {// Créer le répertoire de téléchargement de fichiers file.mkDirs (); } // Le chemin réel vers la chaîne de stockage de fichiers filepath = realPath + file.separator + realName; essayez {part.write (filepath); } catch (ioException e) {e.printStackTrace (); }} jsonObject.put ("data", liste); return jsonObject; } La collection de liste ajoute une chaîne épissée par le nom du fichier et le nom de fichier réel, qui est nécessaire plus tard. RealName est d'empêcher les conflits entre plusieurs noms de fichiers téléchargés. RealPath est le chemin d'économie de fichiers. Différents systèmes d'exploitation ont des chemins différents. RealPath est mieux placé sous Tomcat pour faciliter le portage du projet.
Où file.separator est le séparateur de chemin, qui peut identifier automatiquement de quel système d'exploitation est et utiliser différents séparateurs de chemin (Windows est '/', Linux est '/'). Renvoyez enfin la liste à la réception.
Cet article a été compilé dans "Résumé des techniques d'opération de téléchargement Java", et tout le monde est le bienvenu pour apprendre et lire.
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.