Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 411
  • Last Modified:

Building a URL for a Servlet generated file

I have a Servlet that creates a CVS file based on some user specifications. The file is created but it is created on my weblogic domain root (user_projects/domain/mydomain)

The issue is that after I created the file I need to provide an URL for the user to download the file, since the deployment is on a WAR file it is not clear for me where should I store the CSV file for been able to provide a URL to the user.
0
ronenr
Asked:
ronenr
  • 3
  • 3
1 Solution
 
ramazanyichCommented:
why do you need to store CSV file locally on the server ?
you can directly stream generated CSV file to the client's browser.

Example code follows.



public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,  IOException{
   doPost(request,response);
}
 
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,  IOException{
 
     InputStream in =generateCSVFile(request);
     response.setContentType("application/csv");
     OutputStream out=response.getOutputStream();
     int k=-1;
     byte[] buf = new byte[10000];
     while((k=in.read(buf)) >0){
        out.write(buf,0,k);
     }
 
}

Open in new window

0
 
ronenrAuthor Commented:
More or less since I need to return a HTML page with information and that page should include the link to the file or the browser pop-up requesting to save or open the file. With your example  may  I also return the HTML page with the same stream?
0
 
ramazanyichCommented:
you can return an HTML page with link again to the servlet URL with additional parameter for exmple.
and in the second invocation just do retrive csv and return it like in my example
0
Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
ramazanyichCommented:
example:


public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,  IOException{
     if(request.getParameter("download")!=null){
     InputStream in =generateCSVFile(request);
     response.setContentType("application/csv");
     OutputStream out=response.getOutputStream();
     int k=-1;
     byte[] buf = new byte[10000];
     while((k=in.read(buf)) >0){
        out.write(buf,0,k);
     }
     }else{
         response.getOutputWriter().write("<html> .... <a href="/your/servleturl?download=true">Download csv </a>...</html>");
     }
 
}
0
 
ronenrAuthor Commented:
OK, what I am trying to understand is, Is there a way to store the file on the server and build an URL for it (so the user can click the link and get the file) or I must retrieve the file using a servlet as your example suggest. In the case that the only way is to use a servlet to read and send the file the question was answer but if there is a way I can store the file and provide a link to it more information is needed.
0
 
ronenrAuthor Commented:
Although it do not directly answer the question about where to store the file on a Weblogic server I will use the solution suggested. Thanks for taking the time at looking at this issue.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

  • 3
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now