Est-il possible de contrôler le nom du fichier de Réponse d'un Maillot de service de Repos?
Actuellement, j'ai une méthode de Jersey, qui permet de retrouver un fichier à partir d'un référentiel de contenu et la retourne comme une Réponse. Le fichier peut être un fichier jpeg, gif, pdf, docx, html, etc. (en gros n'importe quoi). Actuellement, cependant, je ne peux pas comprendre comment je peux contrôler le nom du fichier puisque chaque fichier se télécharge automatiquement avec le nom de (télécharger.[l'extension de fichier] c'est à dire (download.jpg, download.docx, télécharger.pdf). Est-il possible que je peux configurer le nom de fichier? J'ai déjà dans une Chaîne, mais je ne sais pas comment faire pour configurer la réponse de sorte qu'il affiche le nom du fichier au lieu de retomber sur "télécharger".
@GET
@Path("/download/{id}")
public Response downloadContent(@PathParam("id") String id)
{
String serverUrl = "http://localhost:8080/alfresco/service/cmis";
String username = "admin";
String password = "admin";
Session session = getSession(serverUrl, username, password);
Document doc = (Document)session.getObject(session.createObjectId(id));
String filename = doc.getName();
ResponseBuilder rb = new ResponseBuilderImpl();
rb.type(doc.getContentStreamMimeType());
rb.entity(doc.getContentStream().getStream());
return rb.build();
}
Vous devez vous connecter pour publier un commentaire.
Vous pouvez ajouter un "
Content-Disposition
de l'en-tête" pour la réponse, par exemplefilename*=UTF-8''url_encoded_filename
. Savez-vous pourquoi?Une meilleure façon de le faire, ce qui est plus typesafe, à l'aide de la Jersey fourni
ContentDisposition
classe:org.glassfish.jersey.media
/jersey-media-multipart
, que vous ne pourriez pas déjà si vous ne JSON exclusivement entre le client et le serveur.com.sun.jersey.core.header.ContentDisposition
Dans le cas où vous n'utilisez pas la ResponseBuilder de classe, vous pouvez définir l'en-tête directement sur la Réponse, ce qui évite toute surcharge de dépendances:
Ici, j'ai trouver la solution à mon problème. J'ai ajouté le nom du fichier dans l'en-tête de réponse.