SpringMVC pour le téléchargement de fichiers et télécharger
étape de JavaWebrapportnous avons utilisé le servlet pourtéléchargement de fichiers ettéléchargementopérations et SpringMVC réalisersoutien direct pourfonctionnement de téléchargement, fournissantmultipart
analyseur. MultipartFile
Elle fournitméthodes pouropérations de fichiers,rend plus facile de téléchargerfichiers. Quesoittéléchargement outéléchargement est de convertir le flux binaire, Comprenons la forme d'un cas defaçon d'utiliser le téléchargement SpringMVC fichier de miseœuvre.
Uploader
prêt
comprendre
- Téléchargement de fichiers Nous première chose à considérer est de savoir où télécharger le fichier? Il est chargé dans le répertoire du projet, ou le télécharger sur votre disque local?
- Étant donné que les fichiers téléchargés sont généralement des fichiers binaires, donc nous avons besoin d' un moyen de soumettre un formulaire à coder. En
enctype
fixantmultipart/form-data
, pour chaque champ d'entrée présentera (formulaire par défaut présenté comme un format de stockage de données différentes parties requête POST名字-值
, est manifestement pas approprié pour le type de chargement de fichier de données binaires similaire). - Spring fournit une des
multipart
données de l' analyseurCommonsMultipartResolver
(MultipartResolver
interface classe d'implémentation), mais cet analyseur est basé sur laApache Commons FileUpload
technologie, la nécessitécommons-filrUpload.jar
d' un soutien.
configuration
De plus, nous avons utilisé Avant le printemps et la SpringMVC d'abord les dépendances de pot, ont également besoin d'importer les fichiers jar suivants:
<! -文件上传下载->
<dependency>
<groupId> commons-fileupload </ groupId>
<artifactId> commons-fileupload </ artifactId>
<version> 1.3.1 </ version>
</ dependency>
<dependency>
<groupId> commons-io </ groupId>
<artifactId> commons-io </ artifactId>
<version> 2.4 </ version>
</ dependency>
在springmvc.xml中配置上传下载解析器
<! - le téléchargement et le téléchargement analyseur ->
<bean ci - dessus mentionné id = "la MultipartResolver" class = "org.springframework.web.multipart.commons.CommonsMultipartResolver">
<Property name = "defaultEncoding" value = "UTF-8"> < / propriété>
<Property name = "maxUploadSize" value = "10485760"> </ propriété> <- définir la taille maximale prise en charge téléchargement B ->!
</ haricot>
exemple de code avant:
L'arrière-plan de code exemple
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
@RequestMapping ( "/ insertMovie" ) @ResponseBody publique Carte <String, String> insertMovie (@RequestParam (valeur = "fichier", requis = false ) Fichier MultipartFile, film Film, HttpServletRequest demande ) { Carte <String, String> ret = nouvelle HashMap <String, String> (); Film movie1 = movieServices.selectMovieByName (movie.getMovieCname ()); si (movie1! = null ) { ret.put ( "type", "erreur" ret.put ( "film existe déjà, ne pas ajouter le second" "MSG", ); retour RET; } IF (. longueur movie.getMovieDetail () ()> 255 ) { ret.put ( erreur "type", » " ); ret.put ( " msg "" film détaille le texte est trop long, s'il vous plaît fournir une brève description " ), retour RET; } IF (file.getSize ()> 10485760 ) { ret.put ( " du type "" erreur " ); ret.put ( "msg", " la taille du fichier ne dépassant pas 10 M" ); retour RET; } Chaîne oldName = file.getOriginalFilename (); Du type String = oldName.substring (oldName.lastIndexOf () + 1 "" , OldName.length ()); SI ! ( "JPG, JPEG, GIF, PNG" .toUpperCase () contient le (type.toUpperCase ()). ) { ret.put ( "du type", "erreur" ); ret.put ( "msg", "ajouter les images suffixe JPG, JPEG, GIF, Pang" ), retour RET; } // télécharger des images chemin enregistré, le chemin pour les films affiche du film / nom du film / image / image String path = request.getSession (). getServletContext (). getRealPath ( "statiques / statiques / films /" + movie.getMovieCname () + « / image / " ), cible de fichier = new new fichier (chemin); si (!target.exists ()) { target.mkdirs (); } Chaîne newName "" = System.currentTimeMillis () + + Type; essayez { file.transferTo ( nouveau fichier (cible, newName)); } Captures (IOException e) { e.printStackTrace (); ret.put ( "type", "erreur" ); ret.put ( "msg", "文件保存异常" ); retourner ret; } // 电影海报的项目绝对路径 movie.setMoviePicture ( "statiques / statiques / films /" + movie.getMovieCname () + "/ image /" + newName); Lorsqu'il est ajouté par défaut, l'état du film est fixé à 1, ce qui représente agressivement movie.setMovieState (1 ); int I = movieServices.insertMovie (Film), IF (I <0 ) { ret.put ( "type", "erreur" ) ; ret.put ( "msg", "ajouter échoué" ), retour RET; } ret.put ( "du type", "succès" ); ret.put ( "msg", "ajouté avec succès" ); retour RET; }