Téléchargement d'image Web Java et téléchargement de fichiers
Le téléchargement d'image et le téléchargement de fichiers sont essentiellement les mêmes, et l'image elle-même est également un fichier. Le téléchargement de fichiers est pour télécharger des images sur le serveur. Bien qu'il existe de nombreuses façons, l'implémentation sous-jacente consiste à lire et à écrire des fichiers.
Choses à noter
1. Le formulaire doit écrire l'attribut encType = "Multipart / Form-Data"
2. Afin de s'assurer que le fichier peut être téléchargé avec succès, la valeur d'attribut de nom du contrôle de fichier doit être cohérente avec le nom de la variable de couche de contrôle que vous avez soumis.
Par exemple, si le nom de l'espace est un fichier, vous devez le définir en arrière-plan
fichier privé; // Nom de contrôle de fichier
chaîne privée FileContentType; // Type d'image
File FileFileName privé; //Nom de fichier
1.JSP Page
<% @ Page Language = "Java" ContentType = "Text / Html; charSet = UTF-8" Pageencoding = "UTF-8"%> <! Doctype HTML PUBLIC "- // W3C // DTD HTML 4.01 Transitional // En" "http://www.w3.org/tr/html4/loose" <html> <éad- head> <meta http-equiv = "content-type" contenu = "text / html; charset = utf-8"> <méta http-equiv = "pragma" contenu = "non-cache" /> <basé cible = "_ self"> <t titre> "" EncType = "multipart / form-data"> <input type = "file" name = "file" value = "file"> <input type = "soume" value = "identifier"> </ form> </ body> </html>
1. Contrôleur qui doit être soumis pour les données de la page
package com.cpsec.tang.chemical.action; import java.io.file; import java.io.ioException; import java.util.random; import javax.annotation.resource; import javax.servlet.http.httpservletRequest; import org.apache.comons.io.filetuls; import; org.apache.struts2.ServletActionContext; import org.springframework.sterreotype.controller; import com.cpsec.tang.chemical.biz.lunbobiz; import com.cpse.tang.chemical.entity.image; import com.opensypensypensylous lunboon. étend ActionSupport {/ ** * * / private statique final long SerialVersionUID = 1l; @Resource (name = "Lunbobiz") privé lunbobiz lunbobiz; image d'image privée; fichier privé; // Nom de contrôle de fichier String privé FileContentType; // Type d'image String privé fileFileName; // Nom de fichier numéro entier privé; public String findImage () {image = lunbobiz.findImage (); retourner le succès; } public String alterImage () {image = lunbobiz.findImage (); retourner le succès; } public String alterImage1 () {httpServleRequest request = servletActionContext.getRequest (); String root = request.getRealPath ("/ upload"); // le chemin du serveur sur lequel l'image doit être téléchargée noms de chaîne [] = fileFileName.split ("//."); String filename = ""; if (names.length> = 1) {filename = getrandomString (20) + "." + names [noms.length-1]; } Chaîne picpath = "upload /" + nom de fichier; // Chemin de l'image enregistrée dans le fichier de fichier de base de données1 = nouveau fichier (root); try {fileUtils.copyFile (fichier, nouveau fichier (fichier1, nom de fichier)); }} catch (ioException e) {e.printStackTrace (); } Retour succès; }! Aléatoire aléatoire = nouveau aléatoire (); StringBuffer sb = new StringBuffer (); pour (int i = 0; i <longueur; i ++) {int SB.APPEND (Base.Charat (numéro)); } return sb.toString (); }}Il s'agit de télécharger des fichiers en copie, et il existe d'autres façons
Méthode 2
@Controller ("ContractAction") Classe publique ContractAction étend ActionSupport {private final static String uploadDir = "/ files"; // le chemin pour télécharger le fichier, créer un fichier privé sous webContent; // Le nom de contrôle d'entrée doit être un fichier // téléchargement de nom de fichier collection de chaîne privée fileFileName; // Télécharger la collection de contenu de contenu de contenu Private String FileContentType; Nom de fichier de chaîne privée; public String upload () lève filenotfoundException, ioException {String path = uploadFile (); // le chemin du chemin vers le return de la base de données de la base de données de fichier; } // Exécuter la fonction de téléchargement @SuppressWarnings ("Deprécation") public String uploadFile () lève filenotFoundException, ioException {try {inputStream dans = new FileInputStream (file); String dir = servletActionContext.getRequest (). GetRealPath (uploadDir); Fichier fileLocation = nouveau fichier (dir); // Vous pouvez également créer manuellement le répertoire de téléchargement cible dans le répertoire racine de l'application if (! FileLocation.exists ()) {boolean isCreated = filelocation.mkdir (); Si (! IsCreated) {// Créé n'a pas réussi à créer le répertoire de téléchargement cible, un autre traitement peut être effectué, comme lancer une exception personnalisée, etc. Cette situation ne devrait généralement pas se produire. retourner null; }} // this.setFileFileName (getRandomString (20)); String [] name = this.getFileFileName (). Split ("//."); String filename = getrandomString (20) + "." + Name [name.length-1]; this.setFileFileName (nom de fichier); System.out.println (nom de fichier); File uploadFile = nouveau fichier (dir, nom de fichier); OutputStream out = new FileOutputStream (uploadFile); octet [] tampon = nouveau octet [1024 * 1024]; longueur int; while ((longueur = in.read (tampon))> 0) {out.write (tampon, 0, longueur); } in.close (); out.close (); return uploaddir.substring (1) + "//" + fileFileName; } catch (filenotfoundException ex) {return null; } catch (ioException ex) {return null; }} chaîne statique publique getRandomString (int longueur) {String str = "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; Aléatoire aléatoire = nouveau aléatoire (); StringBuffer sb = new StringBuffer (); pour (int i = 0; i <longueur; i ++) {int SB.APPEND (str.charat (numéro)); } return sb.toString (); }}En plus du téléchargement d'image unique, il y a plusieurs téléchargements d'images et les principes sont les mêmes
package com.cpsec.tang.chemical.action; import java.io.file; import java.io.fileInputStream; import java.io.filenotfoundException; Importer java.io.fileOutputStream; Importer java.io.ioException; import java.io.inputStream; import java.io.outputStream; Importer java.util.list; Importer javax.servlet.http.httpservletRequest; import org.apache.struts2.servletActionContext; import com.opensymphony.xwork2.ActionSupport; / ** * Multi-File upload * / public class FilespoLotAction étend ActionSupport {// Upload File Storage Path Finn Privade Finn Privade Finn = UpDirDiR ActionDport {// Upload File Path Path Finn Privé Finn Privé Finn Privilor Finn = UpDirDiR ActionDirDi "/télécharger"; // Télécharger la collection de fichiers Liste privée <Fichier> Fichier; // Télécharger la collection de noms de fichier Liste privée <string> fileFileName; // Télécharger la collection de type de contenu de contenu Liste privée <string> fileContentType; Liste publique <Fichier> getFile () {return file; } public void setFile (list <file> file) {this.file = file; } public list <string> getFileFileName () {return fileFileName; } public void setFileFileName (list <string> fileFileName) {this.fileFileName = fileFileName; } public list <string> getFileContentType () {return fileContentType; } public void setFileContentType (list <string> fileContentType) {this.fileContentType = fileContentType; } public String uploadForm () lève une exception {httpServleRequest request = servletActionContext.getRequest (); String webPath = null; // télécharger le chemin pour (int i = 0; i <file.size (); i ++) {// Loop Téléchargez chaque fichier uploadFile (i); webPath = "upload /" + this.getFileFileName (). get (i); } return "succès"; } // Exécuter la fonction de téléchargement private String uploadFile (int i) lève filenotfoundException, ioException {try {inputStream in = new FileInputStream (file.get (i)); String dir = servletActionContext.getRequest (). GetRealPath (uploadDir); Fichier fileLocation = nouveau fichier (dir); // Ici, vous pouvez également créer manuellement le répertoire de téléchargement cible dans le répertoire racine de l'application if (! FileLocation.exists ()) {boolean isCreated = filelocation.mkdir (); Si (! IsCreated) {// Si le répertoire de téléchargement cible est créé, un autre traitement peut être effectué, comme lancer une exception personnalisée, etc. Cette situation ne devrait pas se produire. retourner null; }} String filename = this.getFileFileName (). Get (i); File uploadFile = nouveau fichier (dir, nom de fichier); OutputStream out = new FileOutputStream (uploadFile); octet [] tampon = nouveau octet [1024 * 1024]; longueur int; while ((longueur = in.read (tampon))> 0) {out.write (tampon, 0, longueur); } in.close (); out.close (); return uploadFile.toString (); } catch (filenotfoundException ex) {return null; } catch (ioException ex) {return null; }}}Merci d'avoir lu, j'espère que cela peut vous aider. Merci pour votre soutien à ce site!