Struts2文件下载小例子

本文介绍如何使用Struts框架实现文件下载功能,包括后台Java代码实现、Struts配置及前端请求方法。通过具体示例展示了如何配置Struts的stream结果类型以下载PDF文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目补充了一下,需要从服务器上下载文件(效果如下图),来maker一下。

效果图

1.后台JAVA代码

    //省略这两个参数的get set 方法
    private InputStream downloadFilePath;//下载文件流
    private String downloadFileName;//下载文件名

    /**
     *TODO(根据路径下载pdf)
     *@param path
     **/
    public String getPdfByUrl(){    
        String saveRealFilePath = ServletActionContext.getServletContext().getRealPath("/doc");//下载路径 
        saveRealFilePath=saveRealFilePath+downloadFileName;
        System.out.println(saveRealFilePath);  
        downloadFileName=downloadFileName.replace("/", "");
        try {
            downloadFileName=URLEncoder.encode(downloadFileName,"UTF-8");//解决中文乱码
            downloadFilePath=new FileInputStream(saveRealFilePath);
        } catch (Exception e) {

            e.printStackTrace();
        }
        return SUCCESS;

    }

2.Struts配置

        <action name="plan_download" class="com.gsafety.plan.module.actions.PreplanAction" method="getPdfByUrl">
            <!--配置结果类型为stream-->
            <result name="success" type="stream">
                <!--被下载的文件类型为pdf,其他类型请百度-->
                <param name="contenType">application/pdf</param>
                <!--被下载的输出流,跟后台参数的命名一致-->
                <param name="inputName">downloadFilePath</param>
                <!--被下载的文件名字,从后台获得,跟后台参数的命名一致-->
                <param name="contentDisposition">attachment;filename="${downloadFileName}"</param>
                <!--缓冲大小-->
                <param name="bufferSize">8192</param>
            </result>               
        </action>

3.前台请求(仅供参考)

        //url 是我自己传的路径  
        function getPdfByUrl(url){          
                // 创建Form  
                var form = $('<form></form>');  

                // 设置属性  
                form.attr('action', "${pageContext.request.contextPath}/plan/preplan/plan_download.action");  
                form.attr('method', 'post');

                // 创建Input  
                var set_input = $('<input type="text" name="downloadFileName" />');
                set_input.attr('value', url); 

                // 附加到Form  
                form.append(set_input);  

                // 提交表单  
                $(document.body).append(form);
                form.submit();  
                //return false自动刷新
                return false;   
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值