Damo
Damo

Reputation: 51

Spring RestTemplate upload binary file

Image

I want to write a client code to consume an API. The API is expecting a text file. When I select the binary file option in the postman tool and select any text file from my local it worked. how to implement this in spring ?. I have tried MULTIPART_FORM_DATA but no luck.

Upvotes: 1

Views: 3236

Answers (1)

Ali.Mojtahed
Ali.Mojtahed

Reputation: 2587

If You mean file

@RestController
public class FileContentController {
    
@RequestMapping(value="/up", method = RequestMethod.POST)
public ResponseEntity<?> upload(@RequestParam("file") MultipartFile file) 
        throws IOException {
        String  contentType=file.getContentType());
        InputStream i=file.getInputStream();
        return new ResponseEntity<>(HttpStatus.OK);
    }
    return null;
}

also spring boot has multi part confs, you should enable it and set size and tempdir ,In Earlier version spring boot need to add:

spring.servlet.multipart.max-file-size=128KB
spring.servlet.multipart.max-request-size=128KB
spring.servlet.multipart.enabled=true
spring.servlet.multipart.location=${java.io.tmpdir}

However in your client code you should not set content-type application/json in your header post request simple fetch should be such

const input = document.getElementById('uploadInput');
const data = new FormData();
data.append('file', input.files[0]);
var resp = await fetch('upload/', {
                        method: 'POST',
                        body: data
                          });
if (!resp.ok) {
  throw new Error(`HTTP error! status: ${resp.status}`);
}
if (resp.ok) {
  await this.images();
}
   

Upvotes: 0

Related Questions