Grails Programmer: How to output CSV from a Grails 3 Controller. 20 / 1 Reply def outs = Stream. = (). response. Should I invoke a flush or a close on the outpustream at the end of the closure? () or GRAILS IllegalStateException error for return the Stream # Closed. graemerocher opened this Issue on Oct 29, · 0 comments.
|Published (Last):||28 December 2013|
|PDF File Size:||13.62 Mb|
|ePub File Size:||17.39 Mb|
|Price:||Free* [*Free Regsitration Required]|
Proper way to stream file from controller
Thanks If you are using Grails 2, just change the setConfiguration part to this: Grails will try to find the content type based on the extension of the filename. This is nice and clean and works just fine.
I believe I’ve read somewhere that I might be able to cure this problem by replacing Tomcat7 with Tomcat8; however right now I’m running Ubuntu Leave a Reply Cancel reply Your email address will not be published.
Render Binary Respobse with the File Attribute.
Grails Programmer : How to output CSV from a Grails 3 Controller | Sergio del Amo
The file attribute can be assigned a byteFileInputStream or String value. If the answer is yes, subscribe to Groovy Calamari. You may need to add additional method signatures so that they can be statically compiled but the concept is the same.
Then we use the render method and the file and contenType attributes to render the image in a browser:. Will give this a shot. Grails will try to determine the content type for files, but we can also use the contentType attribute to set the content type.
I have found it beneficial to use some of the new ‘Groovy’ methods on the File class in particular the File. B I am using the mime type and encoding defined in application. Dynamic Productivity for the Java Developer’, author: Should I invoke a flush or a close tesponse the outpustream at the end of the closure? If the byte arrays in your examples are large, or if the ‘download’ action is called frequently, you could run into problems. Sign up using Email and Password. I know we worked on this one for a while!
Daniel 1, 1 3 I also typed the methods as void perhaps I am still too Java-fussy? Currently, here’s how I do it: For reference in case others stumble over the same problem, I had to import groovy. We have fixed grsils problem in our applications by adding a static utility ouutputstream The BootStrap init closure runs when the app starts.
Notify me of follow-up comments by email. The code now appears as response. Newer Post Older Post Home.
Most browser will then automatically download the binary content, so it can be saved on disk. I wrote a post; in Spanish though.
The Grails Framework
Your email address will not be published. C If you want the file to download you need to setup the Content-disposition header. Anyway, this is what I do and it works fairly well for me: My code is only a little different, in that I don’t set the “Content-disposition” header and flush afterwards. A I will recommend to put the logic fetching the lines in a Service. Learn more about retrieving config values. We can use the fileName attribute to set a filename for the binary content.
This will also set a response header with the name Content-Disposition with a the filename as value. You can fix this by adding CompileStatic to your method, but that is not always feasible.