How can I get the user to download my file? (Java, MVC, Excel, POI)

六眼飞鱼酱① 提交于 2020-01-01 07:13:11

问题


I'm using Struts2, Spring, and Hibernate.

I have written a simple Excel file called test.xls with POI. When I run the action, it works because test.xls appears, but in my tomcat folder.

I want that file to be downloadable on my jsp page. How do I go about getting the user to download the .xls file? Rather, how do I call that path?

Sorry if the answer is obvious, I am new to this. I know it probably has something to do with the ServletContext or HttpServletRequest?

[edit] I got it working thanks to the below answers. Here is the working code:

private InputStream excelStream;

public String export(){
//Create excelfile
    HSSFWorkbook workbook = new HSSFWorkbook();
    FileOutputStream file = null;

    try{
         file = new FileOutputStream("poi-test.xls"); 
    }
    catch(IOException e){
        e.printStackTrace();
    }       
//Populate workbook with all the excel stuff
    ...

//Write to file
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    try{
        workbook.write(file);
        workbook.write(baos);
        ByteArrayInputStream bis = new ByteArrayInputStream(baos.toByteArray()); 
        excelStream = bis;
    }
    catch(IOException e){
        e.printStackTrace();
    }
    return "excel";
}

public InputStream getExcelStream() {
    return excelStream;
}


public void setExcelStream(InputStream excelStream) {
    this.excelStream = excelStream;
}

Over in my struts file:

        <result name="excel" type="stream">
            <param name="contentType">application/vnd.ms-excel</param>
            <param name="inputName">excelStream</param>
            <param name="contentDisposition">attachment; filename="excelExport.xls"</param>
            <param name="bufferSize">1024</param>
        </result>

回答1:


You want to use the Struts2 Stream Result for this. Here is some information on that:

  • http://struts.apache.org/2.2.1/docs/ajax.html
  • how to return excel in Struts2 result?
  • Using Stream Result with Struts2



回答2:


If the newly created Excel file is accessible from the web server, why not just present that HTTP link to your Excel file in your JSP page? Unless you want to stream the excel file dynamically rather than physically creating it like you are currently done, this is probably the most straightforward solution.



来源:https://stackoverflow.com/questions/4834446/how-can-i-get-the-user-to-download-my-file-java-mvc-excel-poi

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!