dans mon application grails en utilisant jasper Reports je crée un rapport en format pdf, je veux le rendre disponible en téléchargement .. alors dans quel répertoire de mon application j'ai besoin de sauvegarder le fichier ...? merci d'avanceOù stocker le fichier temporaire dans l'application Grails?
Répondre
possible duplicate ?
Vous pouvez stocker les fichiers où vous le souhaitez, mais n'oubliez pas le répertoire dans lequel vous stockez les fichiers afin qu'ils ne prennent pas tout l'espace disque si vous ne les nettoyez pas activement.
donc, voici ce que je ferais si vous voulez stocker les fichiers et permettre à l'utilisateur de les télécharger maintenant ou plus tard (pas testé et il pourrait être mieux, mais montre le concept) ...
créer une classe qui représente votre répertoire de rapports
class ReportDirectory{
static final String path = "./path/to/reports/"; //<-- generic path on your SERVER!
static{
//static initializer to make sure directory gets created. Better ways to do this but this will work!
File pathAsFile = new File(path).mkdirs()
if (pathAsFile.exists()){
println("CREATED REPORT DIRECTORY @ ${pathAsFile.absolutePath}");
}else{
println("FAILED TO CREATE REPORT DIRECTORY @ ${pathAsFile.absolutePath}");
}
}
public static File[] listFiles(){
return new File(path).listFiles(); //<-- maybe use filters to just pull pdfs?
}
public static void addFile(File file){
FilesUtil.copyFileToDirectory(file, new File(path)); //<-- using apache-commons-io
}
public static void deleteAll(){
listFiles().each(){ fileToDelete ->
fileToDelete.delete();
}
}
public static File findFile(String name){
listFiles().each(){ fileToCheck ->
if (fileToCheck.name.equals(name)){
return fileToCheck
}
}
return null
}
}
Ensuite, dans votre contrôleur, vous pouvez faire des choses comme ça ....
class ReportController{
def runReport = {
File report = createReport() //<-- your method to create a report.
ReportDirectory.addFile(report);
redirect(action:"downloadFle" params:[fileName:report.name])
}
def showAllFiles = {
[files:ReportDirectory.listFiles()]
}
def downloadFile = {
def fileName = params.fileName;
def fileToDownload = ReportDirectory.findFile(fileName);
if (fileToDownload){
response.setContentType("application/octet-stream")
response.setHeader("Content-disposition", "attachment;filename=${fileToDownload .getName()}")
response.outputStream << fileToDownload.newInputStream() //<-- ask the user to download
}else{
//handle when the file is not found
}
}
def deleteAllFiles ={
ReportDirectory.deleteAllFiles()
[files:ReportDirectory.listFiles()] //<-- return the remaining files, if any.
}
}
Quelques commentaires sur cette solution ...
-ce qui ne concerne pas les types MIME, de sorte que le navigateur ne sera pas en mesure de déterminer quel type de données binaires arrive sur le réseau.
est-ce utile?
Le répertoire d'applications n'est pas conçu pour stocker des données.
BTW, vous pouvez le stocker n'importe où ailleurs, puis créer quelques DownloadController
qui savent où les fichiers sont stockés, et l'envoyer au navigateur sur demande.
Comme dans la plupart des cas, l'application Grails se trouvent derrière un frontend (comme nginx), donc, à cette situation, il est beaucoup plus facile de configurer frontend pour servir ces fichiers directement dans le répertoire où vous les rangez
- 1. QLPreviewController: Où se trouve le fichier temporaire?
- 2. Où est le servletContext disponible dans Grails?
- 3. Où stocker les meilleures données de désérialisation temporaire?
- 4. Où est le zipcloak met le fichier temporaire par défaut?
- 5. Stocker un objet JSON dans un fichier temporaire
- 6. Où stocker des informations écrites dans le fichier dans Cocoa?
- 7. où stocker les fichiers cryptés dans Android
- 8. où stocker le fichier .properties à utiliser dans C++ dll
- 9. Où stocker ExceptionLog dans Windpows?
- 10. erreur rpmbuild dans le fichier temporaire
- 11. Où stocker un fichier PDF créé?
- 12. Fichier temporaire en C
- 13. OSX: Où stocker le fichier SQLite pour l'application?
- 14. Enregistrement d'un fichier temporaire
- 15. chemin du fichier temporaire
- 16. Grails Télécharger le fichier
- 17. Où stocker des données?
- 18. Télécharger le fichier grails
- 19. écriture dans un fichier temporaire
- 20. Où stocker les fichiers ftp dans l'application rails
- 21. Où placer des ressources dans le projet Grails?
- 22. Où stocker MongoClient dans Django
- 23. Validation de champ temporaire d'objet de commande Grails
- 24. Stocker le fichier texte dans l'ipod
- 25. Comment obtenir le chemin où se trouve le fichier d'installation Inno temporaire est situé
- 26. Ajouter un fichier temporaire sans fichier temporaire en manipulant inode?
- 27. Où est le chemin d'accès temporaire Microsoft.VisualBasic.Logging exactement
- 28. comment stocker des données dans la mémoire temporaire
- 29. comment allumer le micro dans android et enregistrer le son dans le fichier temporaire
- 30. créer & lire depuis le fichier temporaire
merci splix .. sonne bien .. – maaz