• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

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

 
Greenhorn
Posts: 24
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • 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?
 
Sheriff
Posts: 67746
173
Mac Mac OS X IntelliJ IDE jQuery TypeScript Java iOS
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • 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.
 
author
Posts: 15385
6
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I do not think you have any control over this situation.

Eric
 
Ranch Hand
Posts: 413
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • 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
    Number of slices to send:
    Optional 'thank-you' note:
  • 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.
 
reply
    Bookmark Topic Watch Topic
  • New Topic