Maison >Java >javaDidacticiel >Comment diffuser des fichiers à télécharger à l'aide des contrôleurs Spring ?

Comment diffuser des fichiers à télécharger à l'aide des contrôleurs Spring ?

DDD
DDDoriginal
2024-12-23 01:34:45318parcourir

How to Stream Files for Download Using Spring Controllers?

Téléchargement de fichiers à partir de contrôleurs Spring

Lorsque vous êtes confronté à la nécessité de télécharger un PDF à partir d'un site Web, il est courant d'envisager de générer le fichier de manière dynamique en utilisant une combinaison de frameworks freemarker et PDF comme iText. Cependant, l'exploration d'options supplémentaires peut conduire à des solutions plus efficaces.

Une approche efficace consiste à utiliser les contrôleurs Spring pour gérer les téléchargements de fichiers. Pour y parvenir, vous pouvez exploiter la classe HttpServletResponse fournie par Spring. L'exemple de code suivant illustre comment configurer un contrôleur pour le téléchargement de fichiers :

@RequestMapping(value = "/files/{file_name}", method = RequestMethod.GET)
public void getFile(
    @PathVariable("file_name") String fileName, 
    HttpServletResponse response) {
    try {
      // get your file as InputStream
      InputStream is = ...;
      // copy it to response's OutputStream
      org.apache.commons.io.IOUtils.copy(is, response.getOutputStream());
      response.flushBuffer();
    } catch (IOException ex) {
      log.info("Error writing file to output stream. Filename was '{}'", fileName, ex);
      throw new RuntimeException("IOError writing file to output stream");
    }
}

En utilisant Response.getOutputStream(), vous pouvez diffuser toutes les données, y compris les PDF générés, vers le client. De plus, vous pouvez spécifier le type de fichier en définissant Response.setContentType(). Pour les PDF, ce serait réponse.setContentType("application/pdf");.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn