J'ai du mal à envoyer une réponse qui est un fichier Gzip à partir de S3. Je télécharge le fichier depuis S3 sous forme de fichier Array[Byte]
et je voudrais ensuite le transmettre au client pour que le navigateur s'occupe de la décompression.
Pour être clair, je n'utilise pas le gzipFilter intégré dans Play, car les données sont déjà zippées.
J'ai ceci dans l'action de mon contrôleur :
s3DAO.getFile(id).map(bytes => Ok(bytes).as("application/gzip”))
Sur le client (en utilisant Postman pour le débogage), le fichier Content-Type
est réglé sur application/gzip
mais le corps ressemble à ça :
���[�W�$��j3��-��/�-HOz��ƒ@�HȄ%D���E�Л��%�=P�����$�*v7��X����������=x|��w������챕8�,��X���
Je sais que les octets représentent une charge utile valide, car si j'insère moi-même du code pour la décompresser dans l'action du contrôleur, je peux l'imprimer correctement :
val zipInputStream = new GZIPInputStream(new ByteArrayInputStream(bytes))
val rawString = scala.io.Source.fromInputStream(zipInputStream, Charsets.UTF_8.name).mkString
println(rawString) // I can see my payload
Je ne sais pas quoi faire pour déboguer davantage.