Comment faire pour convertir un fichier en plusieurs parties de Fichier?
Quelqu'un peut-il me dire quel est le meilleur moyen de convertir un fichier en plusieurs parties (org.springframework.web.multipart.MultipartFile) Fichier (java.io.Fichier) ?
Dans mon spring mvc de projet web, j'obtiens le fichier téléchargé en tant que fichier en plusieurs parties.Je dois convertir un Fichier(io) ,donc je peux appeler ce service de stockage d'image(Cloudinary).Ils ne prennent de type (Fichier).
J'ai fait beaucoup de recherches, mais a échoué.Si quelqu'un connait un bon moyen standard s'il vous plaît laissez-moi savoir?
Thnx
- Est-il quelque chose qui vous empêche d'utiliser la méthode
MultipartFile.transferTo()
?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez obtenir le contenu d'un
MultipartFile
à l'aide de lagetBytes
méthode et vous pouvez écrire dans le fichier à l'aide deFiles.newOutputStream()
:Vous pouvez également utiliser le transferTo méthode:
createNewFIle()
est à la fois inutile et inutile ici. Vous êtes maintenant en obligeant lesnew FileOutputStream()
(via le système d'exploitation) pour supprimer le fichier ainsi créé et créer un nouveau.Bien que l'on a accepté la réponse est correcte, mais si vous essayez juste de télécharger votre image à cloudinary, il ya une meilleure façon:
Où multipartFile est votre org.springframework.web.multipart.MultipartFile.
petite correction sur @PetrosTsialiamanis post ,
new File( multipart.getOriginalFilename())
cela va créer le fichier dans l'emplacement du serveur où parfois vous devrez faire face écrire problèmes d'autorisation pour l'utilisateur, il n'est pas toujours possible de donner l'autorisation d'écriture pour tous les utilisateurs qui effectuent des actions.System.getProperty("java.io.tmpdir")
permettra de créer de répertoire temporaire où votre fichier sera créé correctement.De cette façon, vous créez le dossier temp, où fichier est créé , plus tard, vous pouvez supprimer un fichier ou un dossier temp.
mettre cette méthode en ur d'utilité commune et de l'utiliser comme pour les eg.
Utility.multipartToFile(...)
Vous pouvez également utiliser le Apache Commons IO de la bibliothèque et de la FileUtils classe. Dans le cas où vous utilisez maven, vous pouvez le charger à l'aide de la dépendance.
La source de la MultipartFile enregistrer sur le disque.
FileUtils.touch()
est à la fois inutile et inutile ici. Vous êtes maintenant en obligeant lesnew FileOutputStream()
(via le système d'exploitation) pour supprimer le fichier ainsi créé et créer un nouveau.MultipartFile.transferTo(Fichier) est agréable, mais n'oubliez pas de nettoyer les fichiers temporaires, après tout.
La réponse par Alex78191 a travaillé pour moi.
Pour le téléchargement de fichiers ayant une taille supérieure à 10240 octets s'il vous plaît changer la maxInMemorySize dans multipartResolver à 1 mo.
maxInMemorySize
n'a rien à voir avec la limitation d'upload de fichier de taille. Téléchargement du fichier la taille est définie par lemaxUploadSize
de la propriété.maxInMemorySize
prop peut être réglé pour0
.Vous pouvez accéder à tempfile au Printemps par casting si la classe de l'interface
MultipartFile
estCommonsMultipartFile
.Pour se débarrasser du truc avec les fichiers de moins de 10240 octets
maxInMemorySize
propriété peut être mis à 0 dans@Configuration
@EnableWebMvc
classe. Après cela, tous les fichiers téléchargés seront enregistrés sur le disque.createNewFIle()
est à la fois inutile et inutile ici. Vous êtes maintenant en obligeant lesnew FileOutputStream()
(via le système d'exploitation) pour supprimer le fichier ainsi créé et créer un nouveau.si vous ne souhaitez pas utiliser MultipartFile.transferTo(). Vous pouvez écrire le fichier comme ceci