Le transfert de fichiers n'est pas directement pris en charge dans Feign encapsulé par Spring Cloud, mais il peut être mis en œuvre en introduisant des packages d'extension FEIG, nous allons donc parler de la façon de l'implémenter en détail.
Fournisseur de services (recevoir des fichiers)
La mise en œuvre du fournisseur de services est relativement simple, suivez simplement la méthode de mise en œuvre normale de Spring MVC, telles que:
@RestControllerPublic class uploadController {@postmapping (value = "/ uploadFile", consomme = mediaType.multiplart_form_data_value) public string handleFileupload (@requestPart (value = "file") multipartFile file) {return file.getName (); }}Service Consumer (Send Fichier)
Étant donné que le consommateur de service utilisera le client Feign, il est nécessaire de présenter la dépendance de Feign à la soumission des formulaires ici, comme suit:
<dependency> <proupId> io.github.openfeign.form </rompuprid> <letifactive> feign-forwing </ artifactid> <version> 3.0.3 </-version> </dependency> <dependency> <proupId> io.github.openfeign.form </proupId> <Artifactid> feign-formit <version> 3.0.3 </ version> </dependency> <dependency> <proupId> Commons-fileupload </rolgleId> <ArtefactId> Commons-fileupload </ artifactId> </Dependency>
Définissez FeignClient, en supposant que le nom de service du fournisseur de services est le serveur de téléchargement
@FeignClient (value = "upload-server", configuration = testServiceClient.MultupartsupportConfig.class) Interface publique uploadService {@postmapping (value = "/ uploadfile), consommateurs = mediaType.MultistArt_Form_Data_Value) String HandleFilePload (@requestPart (Value =" Fichier) File @Configuration class multipartsupportConfig {@Bean public Encoder feIgnFormEncoder () {return new SpringForsmerCoder (); }}}Après avoir démarré le fournisseur de services, essayez d'écrire des cas de test sur le consommateur de service pour passer le fichier via le client feign défini ci-dessus, tels que:
@ Test @ sneakythrowspublic void testhandlefileupload () {file file = new File ("files / aaa.txt"); DiskfileItem fileItem = (diskfileItem) new DiskFileItemfactory (). CreateItem ("file", mediaType.text_plain_value, true, file.getName ()); try (inputStream input = new FileInputStream (file); outputStream os = fileItem.getOutputStream ()) {ioutils.copy (input, os); } catch (exception e) {lancer un nouveau IllégalArgumentException ("Fichier non valide:" + e, e); } MultipartFile Multi = new CommonsMultuparTFile (FileItem); log.info (testServiceClient.HandleFileUpload (Multi));}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.