1.在开发Web项目中,得到项目根目录有以下几种方式:
(1).当可以得到request对象的时候:
String filePath = request.getRealPath("excels");
@Context
private org.apache.cxf.jaxrs.ext.MessageContext mc;
以下在方法内部
HttpServletRequest req =mc.getHttpServletRequest();
String filePath = req.getRealPath("excels");
(2).当无法得到request对象的时候:(这里需要在jsp中或是继承HttpServlet的类)
ServletContext context = super.getServletContext();
String filePath = context.getRealPath("/excels");
2.生成文件随机名字的方式: fileName =UUID.randomUUID().toString()+".xls";
3.生成随机文件下载方式:
(1)利用SmartUpload
<%@ page import="com.jspsmart.upload.*"%>
<%
try {
SmartUpload su = new SmartUpload();
su.initialize(pageContext);
su.downloadFile(request.getRealPath("excels") + "//"
+ request.getParameter("exportContent"));
out.clear();
out = pageContext.pushBody();
} catch (Exception e) {
}
%>
(2).<%
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
//防止IE缓存
response.setHeader("pragma","no-cache");
response.setHeader("cache-control","no-cache");
response.setDateHeader("Expires",0);
response.setContentType("APPLICATION/OCTET-STREAM");
response.setHeader("Content-Disposition", "attachment;");
String objectID = request.getParameter("objectID") == null ? "" : request.getParameter("objectID");
SysModel sysmodel = ModelFactory.getSysmodel();
SysPersistence persistence = PersistenceFactory.getInstance(sysmodel);
String sql="";
sql="select FILEEXT, Name " +
"from SysComm_FileImg where Is_del = '0' and FD_OBJECTID="+objectID;
System.out.println(sql);
ArrayList<String[]> list= persistence.getSearchResult(110, sql);
String[] data=(String[])list.get(0);
String filename=data[1]+"."+data[0];
response.setHeader("Content-Disposition", "attachment; filename=/""+java.net.URLEncoder.encode(filename,"UTF-8")+"/"");
ServletOutputStream sout=null;
try {
SysModel sysmodelimg = ModelFactory.getSysmodel();
SysPersistence persistenceimg = PersistenceFactory.getInstance(sysmodelimg);
sout = response.getOutputStream();
persistenceimg.readBlobToOutputStream(110,objectID,"FileContents",sout);
out.clear();
out = pageContext.pushBody();
}catch (Exception e) {
e.printStackTrace();
System.out.println(e.toString());
}finally{
sout.close();
}
%>