论坛首页 入门技术论坛

JSP实现点击链接后下载文件(相当于右键另存)功能

浏览 4099 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-07-01   最后修改:2009-07-01
/** *//**
     * 实现文件另存功能
     * 
     * @param text
     *            文件内容
     * @param fileName
     *            文件名称
     * @return
     */
    protected String renderFile(String text, String fileName)
            throws IOException
    {
        response.addHeader("Content-Disposition", "attachment; filename="
                + fileName);
        response.setContentType("application/octet-stream");
        response.setCharacterEncoding("GB2312");
        response.getWriter().write(text);
        response.flushBuffer();
        response.getWriter().close();
        return null;
    }


下载的action:
/** *//**
     * 提供下载的方法
     * @return
     */
    public String down()
    {
        String dir = getFullPath() + "/upload/file/";
        try
        {
            if (!FileUtils.exists(dir))
            {
                new File(dir).mkdirs();
            }
            Random r = new Random(System.currentTimeMillis());
            Integer randomInt = r.nextInt();
            this.renderFile("test content:" + randomInt,randomInt + ".txt");
        }
        catch (IOException e)
        {
            e.printStackTrace();
            this.renderText(e.getMessage());
        }
        return null;
    }


页面链接调用:
<a href="${ctx}/va/va!down.do" >下载</a>
   发表时间:2009-07-02   最后修改:2009-07-02
没有配置文件谁知道是如何映射,如何调用的,
struts1和2的差别可大了。
0 请登录后投票
   发表时间:2009-07-03  
eclipse2008 写道
没有配置文件谁知道是如何映射,如何调用的,
struts1和2的差别可大了。

和Struts1,2还是用Servlet没关系。

关键:
response.addHeader("Content-Disposition", "attachment; filename="  
                + fileName);   
        response.setContentType("application/octet-stream");   
        response.setCharacterEncoding("GB2312");   
        response.getWriter().write(text);   
        response.flushBuffer();   
        response.getWriter().close(); 
0 请登录后投票
   发表时间:2009-07-03  
supercrsky 写道
eclipse2008 写道
没有配置文件谁知道是如何映射,如何调用的,
struts1和2的差别可大了。

和Struts1,2还是用Servlet没关系。

关键:
response.addHeader("Content-Disposition", "attachment; filename="  
                + fileName);   
        response.setContentType("application/octet-stream");   
        response.setCharacterEncoding("GB2312");   
        response.getWriter().write(text);   
        response.flushBuffer();   
        response.getWriter().close(); 


晕,如果和Servlet都没关系,那你的程序是如何运行的呢。

0 请登录后投票
   发表时间:2009-07-03  
eclipse2008 写道
supercrsky 写道
eclipse2008 写道
没有配置文件谁知道是如何映射,如何调用的,
struts1和2的差别可大了。

和Struts1,2还是用Servlet没关系。

关键:
response.addHeader("Content-Disposition", "attachment; filename="  
                + fileName);   
        response.setContentType("application/octet-stream");   
        response.setCharacterEncoding("GB2312");   
        response.getWriter().write(text);   
        response.flushBuffer();   
        response.getWriter().close(); 


晕,如果和Servlet都没关系,那你的程序是如何运行的呢。



是我表达的不清楚,还是您没有理解清楚?

用Struts1,Struts2,Servlet都是一样的代码,明白?
0 请登录后投票
   发表时间:2009-07-03  
supercrsky 写道
eclipse2008 写道
supercrsky 写道
eclipse2008 写道
没有配置文件谁知道是如何映射,如何调用的,
struts1和2的差别可大了。

和Struts1,2还是用Servlet没关系。

关键:
response.addHeader("Content-Disposition", "attachment; filename="  
                + fileName);   
        response.setContentType("application/octet-stream");   
        response.setCharacterEncoding("GB2312");   
        response.getWriter().write(text);   
        response.flushBuffer();   
        response.getWriter().close(); 


晕,如果和Servlet都没关系,那你的程序是如何运行的呢。



是我表达的不清楚,还是您没有理解清楚?

用Struts1,Struts2,Servlet都是一样的代码,明白?


看来你的目的只是写个功能,我想多了。

不过我觉得写文章写一个完整的流程会更清楚。
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics