Senden einer Datei an den API-Server mithilfe von Spring Boot RestTemplate (MultipartFile, Formular)
- Dateien können vom Client mithilfe des HTML-Formulars übertragen werden, der SpringBoot-Server kann Dateien jedoch auch direkt an einen anderen Server übertragen.
- Erfahren Sie, wie Sie eine Datei mit RestTemplate übertragen.
Quellcode im Zusammenhang mit der Dateiübertragung
- Schauen wir uns kurz nur die wichtigste Logik an.
- Kopfzeile erstellen. Legen Sie „Content-Type: multipart/form-data“ im Header fest.
- Wenn Sie eine Datei senden, senden Sie die Datei nicht sofort, sondern müssen sie in ByteArrayResource ändern. Konvertieren Sie sie in ByteArrayResource und fügen Sie sie dem Textkörper hinzu.
- Sie können ein Anforderungsobjekt für die Dateiübertragung erstellen oder es mithilfe einer Karte senden.
- Persönlich war ich nicht sicher, in welchem Format ich die Datei senden sollte, aber ich habe gelernt, wie man die Datei mit ByteArrayResource sendet.
fun uploadToOtherServer() {
// 1. Create headers
val headers = HttpHeaders()
headers.contentType = MediaType.MULTIPART_FORM_DATA
// 2. File -> ByteArrayResource
val contentsAsResource = object : ByteArrayResource(uploadRequest.file.readBytes()) {
override fun getFilename(): String {
return uploadRequest.file.name
}
}
// 3. Create a MultiValueMap to set the form parameters
// Add other information if you need
val body: MultiValueMap<String, Any> = LinkedMultiValueMap()
body.add("file", contentsAsResource)
body.add("createdAt", uploadRequest.createdAt)
// 4. Send the request
val requestEntity: HttpEntity<MultiValueMap<String, Any>> = HttpEntity(body, headers)
val responseEntity = restTemplate.postForEntity<Any>(
"http://endpoint-url.com/upload", // endpoint url
requestEntity
)
// Add your logic here
}