Comment puis-je retourner un fichier Zip à partir de mon Java côté serveur à l'aide de JAX-RS?
Je souhaite retourner un fichier zippé de mon côté serveur java à l'aide de JAX-RS pour le client.
J'ai essayé le code suivant,
@GET
public Response get() throws Exception {
final String filePath = "C:/MyFolder/My_File.zip";
final File file = new File(filePath);
final ZipOutputStream zop = new ZipOutputStream(new FileOutputStream(file);
ResponseBuilder response = Response.ok(zop);
response.header("Content-Type", "application/zip");
response.header("Content-Disposition", "inline; filename=" + file.getName());
return response.build();
}
Mais je suis une exception, comme ci-dessous,
SEVERE: A message body writer for Java class java.util.zip.ZipOutputStream, and Java type class java.util.zip.ZipOutputStream, and MIME media type application/zip was not found
SEVERE: The registered message body writers compatible with the MIME media type are:
*/* ->
com.sun.jersey.core.impl.provider.entity.FormProvider
Quel est le problème et comment puis-je résoudre ce problème?
OriginalL'auteur prince | 2014-04-05
Vous devez vous connecter pour publier un commentaire.
Vous déléguez en Jersey, la connaissance de la façon de sérialiser les ZipOutputStream. Ainsi donc, avec votre code dont vous avez besoin pour mettre en œuvre une coutume MessageBodyWriter pour ZipOutputStream. Au lieu de cela, il est plus raisonnable option pourrait être de retour le tableau d'octets en tant qu'entité.
Votre code ressemble à ceci:
Dans cet exemple, j'utilise FileUtils de Apache Commons IO pour convertir Fichier byte[], mais vous pouvez utiliser une autre application.
Nooon! Pourquoi êtes-vous en train de lire tout le fichier en mémoire?
OriginalL'auteur efernandez
En Jersey 2.16 fichier de téléchargement est très facile
Ci-dessous est un exemple pour le fichier ZIP
OriginalL'auteur orangegiraffa
Vous pouvez écrire les données de pièce jointe à StreamingOutput classe, que ce Maillot va lire.
OriginalL'auteur Anil Bachola
Je ne suis pas sûr que c'est possible en Jersey, juste de retour d'un flux comme résultat de la méthode annotée. Je suppose que, plutôt de flux doit être ouvert et le contenu du dossier écrit dans le flux. Jetez un oeil à cette blog. Je pense que Vous devriez mettre en place quelque chose de similaire.
OriginalL'auteur Opal