[置顶] 用struts1进行文件的下载

这是一个文件下载的jsp界面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>首页</title>
  </head>
  
  <body>
    <html:link action="/RegisterUIAction">注册</html:link>
    <html:link action="/EditUserUI">修改用户信息</html:link>
    <html:link action="/UploadFileUI">上传文件</html:link>
     <html:link action="/DownFileAction">下载文件</html:link>
  </body>
</html>
然后在struts-config配置文件中配置一把

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
          "http://struts.apache.org/dtds/struts-config_1_3.dtd">

<struts-config>

	<action-mappings>
		
		<action path="/DownFileAction" 
		type="cn.lfd.web.action.DownFileAction"
		scope="request"
		validate="false"
		></action>
		<action path="/UploadFileUI" forward="/WEB-INF/jsp/upload.jsp"></action>
	</action-mappings>
</struts-config>
最后新建一个DownFileAction 继承 DownloadAction就可以实现文件的下载了

package cn.lfd.web.action;
import java.io.File;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DownloadAction;

public class DownFileAction extends DownloadAction {

	@Override
	protected StreamInfo getStreamInfo(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		//拿到ServletContext对象来获取要下载的文件的真实路径
		ServletContext context = request.getSession().getServletContext();
		String path = context.getRealPath("/download/1.png");
		//通过真实路径构建一个File对象
		File file = new File(path);
		//设置好response的一些头和文件的文件名
		response.setHeader("content-disposition", "attachment;filename="+file.getName());
		//通过返回FileStreamInfo对象来把数据打给浏览器
		return new DownloadAction.FileStreamInfo("image/jpg", file);
	}
	
}

你可能感兴趣的:(文件下载,struts,javaweb)