您的位置:首页 > 其它

下载--保存(下载)文件到本地(.doc .jpg)

2013-02-28 23:32 141 查看
public ActionForward downloadxsxz(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
{
/**
* 获得待导出文件路径和自定义下载文件名
*/
String filepath = request.getParameter("filepath");//英文名。doc
String _expfname = request.getParameter("expfname");//中文名
String houzhui = request.getParameter("houzhui");//英文名  。doc  .img
_expfname = ExportAction.decodeBase64(_expfname,"UTF-8");

/**
* 文件名为空则直接跳出执行
*/
if (filepath == null || "".equals(filepath.trim()))
return null;
/**
* 格式化文件名
*/
filepath = "e:/test/";

/**
* 取得路径配置   判断是那种类型
* XsxzBysPicPath
* XsxzBysDocPath
*/

String _folder = "";

if(   "doc".equals(houzhui)){
_folder = SISConfigFactory.getIetConfig().get(XsxzBysDocPath);
}else if("img".equals(houzhui)){
_folder = SISConfigFactory.getIetConfig().get(XsxzBysPicPath);
}

File _fld = new File(_folder);
if (!_fld.exists())
_fld.mkdir();

File file = new File(_folder + filepath);
/**
* 当没有配置自定义下载的文件名时,取硬盘文件名
*/
if (_expfname == null || "".equals(_expfname.trim()))
_expfname = file.getName();

try
{
/**
* 输出文件
*/
FileInputStream in = new FileInputStream(file);
response.setContentType("application/x-msdownload");
response.setContentLength(in.available());
response.setHeader("Content-Disposition", "attachment;" + "filename="
+ java.net.URLEncoder.encode( _expfname, "UTF-8").replaceAll("\\+", " "));
OutputStream out = response.getOutputStream();
byte[] bb = new byte[1024];
int a = -1;
while ((a = in.read(bb)) != -1)
{
out.write(bb, 0, a);
}
out.close();
in.close();
/**
* 输出结束后,删除硬盘上文件
*/
//            if (org.apache.commons.lang.StringUtils.isBlank(_deleteflag) && file.exists())
//                file.delete();
}
catch (Exception e)
{
e.printStackTrace();
}
return null;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: