【高分】如何使用STRUTS2实现文件动态下载
即通过读取数据库来获得下载文件的信息,而不是在STRUTS.XML中就指定了信息1楼的。。你这个是用SERVLET实现的。。这样不是要在WEB.XML里把STRUTS相关...
即通过读取数据库来获得下载文件的信息,而不是在STRUTS.XML中就指定了信息
1楼的。。你这个是用SERVLET实现的。。这样不是要在WEB.XML里把STRUTS相关的东西给屏蔽掉么。。 展开
1楼的。。你这个是用SERVLET实现的。。这样不是要在WEB.XML里把STRUTS相关的东西给屏蔽掉么。。 展开
3个回答
展开全部
给你一个思路
在struts.xml中获取流file的方法是调用action里的InputStream getFile()方法。
那么其它的属性比如说
<param name="contentType">text/plain</param>
这里面的值你写成${type},那么在action里面就要提供获取的方法String getType()。
这时候这里写成<param name="contentType">${type}</param>。
至于如何动态生成这个type的值,你存入数据库的时候肯定存进去了的吧。
其它的文件名啊,contentDisposition都可以用这个方法动态赋给struts.xml。
试试吧
在struts.xml中获取流file的方法是调用action里的InputStream getFile()方法。
那么其它的属性比如说
<param name="contentType">text/plain</param>
这里面的值你写成${type},那么在action里面就要提供获取的方法String getType()。
这时候这里写成<param name="contentType">${type}</param>。
至于如何动态生成这个type的值,你存入数据库的时候肯定存进去了的吧。
其它的文件名啊,contentDisposition都可以用这个方法动态赋给struts.xml。
试试吧
AiPPT
2024-09-19 广告
2024-09-19 广告
作为北京饼干科技有限公司的工作人员,关于AIPPT免费生成PPT的功能,我可以简要介绍如下:AIPPT是一款基于人工智能技术的PPT制作工具,它为用户提供了免费生成PPT的便捷服务。用户只需简单输入PPT的主题或内容大纲,AIPPT便能智能...
点击进入详情页
本回答由AiPPT提供
展开全部
只是在servlet的doget和dopost实现了而已
他同样可以把功能代码移植到STRUTS相应的Action中
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import cn.com.sms.model.PersonModel;
import cn.com.sms.entity.Person;
public class DownLoadServlet extends HttpServlet {
private static final String CONTENT_TYPE = "text/xml; charset=GBK";
//Initialize global variables
public void init() throws ServletException {
}
//Process the HTTP Get request
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
response.setContentType(CONTENT_TYPE);
//这里是要从数据库中读取出文件路径
String id = request.getParameter("id");
PersonModel pm = new PersonModel();
Person person = null;
try {
person = pm.getPersonFromId(Integer.parseInt(id));
String path = this.getServletContext().getRealPath(person.getOther());
File fileToDown = new File(path);
FileInputStream fileIn = new FileInputStream(fileToDown);
BufferedInputStream buffer = new BufferedInputStream(fileIn);
int fileLength = fileIn.available();
byte[] fileBytes = new byte[fileLength];
//设置文件大小
response.setContentLength(fileLength);
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition",
"attachment;filename=top.gif");
//输出文件流
while (true) {
int isOver = buffer.read(fileBytes);
if (isOver == -1)
break;
}
buffer.close();
ServletOutputStream out = response.getOutputStream();
out.write(fileBytes);
out.close();
} catch (Exception ex) {
}
}
//Clean up resources
public void destroy() {
}
}
要添加2个jar包:common_fileUpload.jar 和 common_io.jar
他同样可以把功能代码移植到STRUTS相应的Action中
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import cn.com.sms.model.PersonModel;
import cn.com.sms.entity.Person;
public class DownLoadServlet extends HttpServlet {
private static final String CONTENT_TYPE = "text/xml; charset=GBK";
//Initialize global variables
public void init() throws ServletException {
}
//Process the HTTP Get request
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
response.setContentType(CONTENT_TYPE);
//这里是要从数据库中读取出文件路径
String id = request.getParameter("id");
PersonModel pm = new PersonModel();
Person person = null;
try {
person = pm.getPersonFromId(Integer.parseInt(id));
String path = this.getServletContext().getRealPath(person.getOther());
File fileToDown = new File(path);
FileInputStream fileIn = new FileInputStream(fileToDown);
BufferedInputStream buffer = new BufferedInputStream(fileIn);
int fileLength = fileIn.available();
byte[] fileBytes = new byte[fileLength];
//设置文件大小
response.setContentLength(fileLength);
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition",
"attachment;filename=top.gif");
//输出文件流
while (true) {
int isOver = buffer.read(fileBytes);
if (isOver == -1)
break;
}
buffer.close();
ServletOutputStream out = response.getOutputStream();
out.write(fileBytes);
out.close();
} catch (Exception ex) {
}
}
//Clean up resources
public void destroy() {
}
}
要添加2个jar包:common_fileUpload.jar 和 common_io.jar
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用stream类型的result就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询