file-uploadfilereaderplayframework-2.1

How to send base64 encoded file to PlayFramework server?


I'd like to implement a FileUpload using the new FileReader API. From the client side, everything works well and I can send a PUT request to the server with the correct fields containing the file in Base64 encoded.

But in the server side, it's not going great, here are my results :

Logger.info(String.valueOf(request().body().asRaw())); // null
Logger.info(String.valueOf(request().body().asText())); // null

And most importantly :

Logger.info(String.valueOf(request().body().isMaxSizeExceeded())); // true !

What am I missing? How can I make it work?


Solution

  • I found the answer to my question !

    For those who are looking for it, here's the answer :

    You need to add a BodyParser as annotation for your method, and specify a higher maxLength value.

    @BodyParser.Of(value = BodyParser.Json.class, maxLength = 1024 * 1024)
    public static Result method() {
        Logger.info(String.valueOf(request().body().asJson())); // Will not be empty!
    }