Win a copy of Design for the Mind this week in the Design forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

how to keep the filename when client opens a streamed file in browser?

 
Henry Leung
Greenhorn
Posts: 24
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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?
 
Bear Bibeault
Author and ninkuma
Marshal
Pie
Posts: 64692
86
IntelliJ IDE Java jQuery Mac Mac OS X
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
You're doing what you can on the server side. The rest is up to the browser. I've moved this to the HTML forum which as close to a "deal with browser issues" forum as we have.
 
Eric Pascarello
author
Rancher
Posts: 15385
6
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I do not think you have any control over this situation.

Eric
 
Yuriy Fuksenko
Ranch Hand
Posts: 413
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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.
 
Henry Leung
Greenhorn
Posts: 24
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic