MultipartFile feltöltése a Spring RestTemplate programmal

1. Áttekintés

Ez a gyors bemutató arra összpontosít, hogyan töltsön fel egy többrészes fájlt a Spring's RestTemplate segítségével.

Meglátjuk mindkettőt egyetlen fájl és több fájl - feltöltésa RestTemplate használatával.

2. Mi a HTTP többrészes kérés?

Egyszerűen fogalmazva: az alap HTTP POST kérelem törzslap név / érték párokban tárolja az űrlapadatokat.

Másrészt a HTTP-kliensek többszörös HTTP-kéréseket készíthetnek szöveges vagy bináris fájlok elküldésére a szerverre; főleg fájlok feltöltésére használják.

Egy másik gyakori eset az e-mail küldése mellékletként. A többrészes fájlkérések egy nagy fájlt kisebb darabokra bontanak, és határjelekkel jelzik a blokk kezdetét és végét.

Tudjon meg többet a többrészes kérésekről itt.

3. Maven-függőség

Ez az egyetlen függőség elegendő az ügyfélalkalmazáshoz:

 org.springframework spring-web 5.2.2.FELHASZNÁLÁS 

4. A Fájl feltöltési kiszolgáló

A fájlkiszolgáló API két REST végpontot tesz közzé egy, illetve több fájl feltöltéséhez:

  • POST / fájlkiszolgáló / singlefileupload /
  • POST / fájlkiszolgáló / multiplefileupload /

5. Egyetlen fájl feltöltése

Először nézzük meg egyetlen fájl feltöltése a RestTemplate.

Alkotnunk kell HttpEntityfejléc és test. Állítsa be a tartalom típus fejléc értéke MediaType.MULTIPART_FORM_DATA. Ha ez a fejléc be van állítva, RestTemplate automatikusan marsallálja a fájl adatait néhány metaadattal együtt.

A metaadatok tartalmazzák a fájl nevét, fájlméretét és a fájltartalom típusát (például szöveg / sima):

HttpHeaders fejlécek = new HttpHeaders (); fejlécek.setContentType (MediaType.MULTIPART_FORM_DATA);

Ezután építse fel a kérelem törzsét a LinkedMultiValueMap osztály. LinkedMultiValueMap pakolások LinkedHashMap több érték tárolása az egyes kulcsokhoz a LinkedList.

Példánkban a getTestFile () metódus menet közben generál dummy fájlt, és visszaadja a FileSystemResource:

MultiValueMap body = new LinkedMultiValueMap (); body.add ("fájl", getTestFile ());

Végül készítsen egy HttpEntity példány, amely beburkolja a fejlécet és a törzsobjektumot, és a a segítségével tegye fel RestTemplate.

Vegye figyelembe, hogy az egyetlen fájl feltöltése a / fileserver / singlefileupload / végpont.

Végül a hívás restTemplate.postForEntity () befejezi azt a feladatot, hogy csatlakozzon az adott URL-hez és elküldje a fájlt a kiszolgálónak:

HttpEntity requestEntity = új HttpEntity (törzs, fejlécek); String serverUrl = "// localhost: 8082 / spring-rest / fileserver / singlefileupload /"; RestTemplate restTemplate = új RestTemplate (); ResponseEntity response = restTemplate .postForEntity (serverUrl, requestEntity, String.class);

6. Több fájl feltöltése

Több fájl feltöltésekor az egyetlen fájl feltöltésével szemben az egyetlen változás a kérelem törzsének elkészítése.

Hozzunk létre több fájlt és add hozzá őket ugyanazzal a kulccsal ban ben MultiValueMap.

Nyilvánvaló, hogy a kérelem URL-jének hivatkoznia kell a több fájl feltöltésének végpontjára:

MultiValueMap body = new LinkedMultiValueMap (); body.add ("fájlok", getTestFile ()); body.add ("fájlok", getTestFile ()); body.add ("fájlok", getTestFile ()); HttpEntity requestEntity = új HttpEntity (törzs, fejlécek); String serverUrl = "// localhost: 8082 / spring-rest / fileserver / multiplefileupload /"; RestTemplate restTemplate = új RestTemplate (); ResponseEntity response = restTemplate .postForEntity (serverUrl, requestEntity, String.class);

Mindig lehetséges modell egy fájl feltöltését a több fájl feltöltésével.

7. Következtetés

Összegzésként láttunk egy esetet MultipartFile transzfer a Tavasz használatával RestTemplate.

Mint mindig, a példa kliens és szerver forráskódja elérhető a GitHubon.


$config[zx-auto] not found$config[zx-overlay] not found