Dans le processus de développement commercial habituel, le téléchargement de fichiers est un scénario très courant. Spring MVC fournit une prise en charge directe des téléchargements de fichiers, qui est implémentée par MultipartResolver. Spring MVC utilise la technologie Apache Commons FileUpload pour implémenter une classe d'implémentation MultipartResolver - CommonsMultipartResolver. Par conséquent, le téléchargement de fichiers de Spring MVC doit s'appuyer sur le composant d'Apache Commons FileUpload.
Spring Mvc liera le fichier téléchargé à l'objet MultipartFile. MultipartFile fournit des méthodes pour obtenir le contenu du fichier téléchargé, le nom du fichier, etc. Le fichier peut également être stocké localement via la méthode transferTo().
Table des méthodes communes de l'objet MultipartFile :
nom de la méthode | effet |
---|---|
octet[] getBytes() | Obtenir les données du fichier |
Chaîne getContentType[] | Obtenez le type MIME du fichier, tel que image/jpeg, etc. |
InputStream getInputStream() | obtenir le flux de fichiers |
Chaîne getName() | Obtenir le nom du composant de fichier dans le formulaire |
Chaîne getOriginalFilename() | Obtenir le nom d'origine du fichier téléchargé |
Longue getSize() | Obtenir la taille en octets du fichier en octets |
booléen isEmpty() | Vérifiez s'il y a un fichier téléchargé |
void transferTo(File dest) | Enregistrer les fichiers téléchargés dans un fichier de répertoire |
Obtenez le fichier téléchargé et enregistrez l'exemple local :
private String dirPath = "D:/source";
public void fileUpload(MultipartFile picFile,String folderName) throws IOException{
//获取文件原始名以获取它的文件后缀
String fileName = picFile.getOriginalFilename();
//获取"."后的后缀名
String suffix = fileName.substring(fileName.lastIndexOf("."));
//使用UUID.randomUUID()生成一个全局唯一的字符串
fileName = UUID.randomUUID()+suffix;
File dirFile = new File(dirPath);
if (!dirFile.exists()){
dirFile.mkdirs();
}
String filePath = dirPath + "/"+folderName + "/"+ fileName;
File dirFile2=new File(filePath);
if (!dirFile2.exists()){
dirFile2.mkdirs();
}
//将文件保存到本地
picFile.transferTo(dirFile2);
}