When streaming an excel file to client, how to let client opens it directly in IE without losing the filename I specified?
I am writing a struts webapp. When user clicks a particular button, the html form will be submitted to http://mydomain.com/mywebapp/getreport.do. An excel file will then be streamed to user. User can choose to open it directly in IE, or save it.
This is how I set the http header in the Action class:
It works fine. User will be prompted to open or save the file. The filename myexcelfile.xls is displayed in the prompted dialogue box. If user chooses to save, myexcelfile.xls will be the default filename.
However, if user chooses to open it, the filename myexcelfile.xls will be lost. The excel file will be directly opened in IE. If user clicks File --> Save As, the default filename provided will be getreport.do.
I don't want this to happen, because such a filename (getreport.do) might confuse the user. Does any know a solution?
Originally posted by Yuriy Fuksenko: 1. if you have access to your server configuration, you should be able to define an alias for your "getreport.do" and call it whatever you want.
2. Depending on your server abilities and traffic you expect, you may have an option of creating a temp file on you server, naming it whatever you want, write report into it and provide it to user.
Thanks for your suggestions.
I thought of option1 before. It is rather tricky and would add difficulty to the webapp's maintainability in the future. So I took it as a last resort.
For option2, I don't prefer it because it induces another problem about how to control user's accessibility to a physical file on disk. By streaming through a servlet, the servlet can use the user-setting of the webapp.
Could you hold this kitten for a sec? I need to adjust this tiny ad: