日期:2014-05-19  浏览次数:20725 次

请教一个struts2下载问题
昨天做一个SSH整合的网盘上传下载系统,当点击文件下载链接时我想实现在点击确定下载后,数据库中该文件下载次数就 + 1,若取消下载,数据库该文件下载次数就不更新。。。。且当文件下载完后页面自动刷新重新显示所有文件列表以及文件下载次数。
求高手解答

------解决方案--------------------
我不知道你哪部分没做出来。
在点击确定后提交一个值,把这个值添加到request中,比如flag=true;servlet接收到之后读取flag,如果flag为true的话就调用hibernate+1就行了啊。然后把flag置为false发回。
后面那个点击下载确定后就加1比较现实,也就是开始下载后就+1,在服务器端判断是否下载成功比较麻烦。
servlet在+1之后重定向到那个下载页面就OK了,
------解决方案--------------------
你非得用struts2做下载,我没办法帮你,如果你用这个,或许能如你所愿:
Java code

/**
     * 下载文件
     * @param filePath 文件路径(物理路径)
     * @param fileName 源文件名称
     */
    public void downLoadFile(String filePath, String fileName) {
        File file = new File(filePath);
        if (!file.exists() || file.isDirectory()) {
            return;
        }
        InputStream input =null;
        OutputStream output = null;
        try {
            input = new FileInputStream(file);
            output = getResponse().getOutputStream();
            getResponse().setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
            byte[] buffer = new byte[1024];
            int i = 0;
            while ((i = input.read(buffer)) != -1) {
                output.write(buffer, 0, i);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if(null !=output) {
                    output.flush();
                    output.close();
                }
                if(null !=input) {
                    input.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }