Struts2文件下载小例子

xiaoxiao2021-02-28  89

项目补充了一下,需要从服务器上下载文件(效果如下图),来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; }
转载请注明原文地址: https://www.6miu.com/read-85152.html

最新回复(0)