我写了一个程序是下载数据库导出文件的程序(在WINDOWS下测试没有问题下载下来的文件是中文的,但是放到LINUX下就有问题了,根本无法下载,然后我自己加上了getbyte("iso-8859-1"),"gb2312"可以下载但是每次下载的文件名都不一样并且文件名是字母和数字组成没有中文),我把程序贴出来大家帮我看一下!!!!谢谢!!!DOWNLOAD.JSP 下载页面
<form name="form1" action="servlet/fileDownloadServlet" method="POST">
<table align="center">
<tr>
<td width="173" align="center"><strong>数据备份</strong></td>
</tr>
<tr><td> </td></tr>
<tr><td align="center">
<select name="selectFile">
<option value="radcheck">用户信息</option>
<option value="radmanage">管理员信息</option>
<option value="clients">交换机信息</option>
<option value="usergroup">用户组信息</option>
<option value="radgroupreply">组信息</option>
</select>
</td></tr>
<tr><td> </td></tr>
<tr><td align="center">
<input type="submit" value="下载" onClick="return checkFile();">
</td></tr>
</table>
</form>处理页面 这是SERVLET的doGet方法
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
String filename = request.getParameter("selectFile");
String filenamemap = null;
if(filename.equalsIgnoreCase("radcheck"))
filenamemap = new String("用户信息");
if(filename.equalsIgnoreCase("radmanage"))
filenamemap = new String("管理员信息");
if(filename.equalsIgnoreCase("clients"))
filenamemap = new String("交换机信息");
if(filename.equalsIgnoreCase("usergroup"))
filenamemap = new String("用户组信息");
if(filename.equalsIgnoreCase("radgroupreply"))
filenamemap = new String("组信息");
filenamemap=ChangeEncoding.getEncoding(filenamemap);
try{
PageContext pageContext = JspFactory.getDefaultFactory().getPageContext(this,request,response,null,true,8192,true);
ManageSmartUpload manageSmartUpload = new ManageSmartUpload();
if(!filename.equalsIgnoreCase("clients")){
ManageMysql manageMysql = new ManageMysql(filenamemap);
File f = new File("/var/lib/mysql/radius/"+filenamemap+".txt");
if(f.exists()){
f.delete();
}
manageMysql.OutData(filename);
manageSmartUpload.setDownload(pageContext,filenamemap);
manageSmartUpload.delFile(filenamemap+".txt");
}else{
manageSmartUpload.setDownload(pageContext,filename,filenamemap);
}
//this.getServletContext().getRequestDispatcher("/err.jsp?id=11").forward(request,response);
//response.sendRedirect("../managedata.jsp");
}catch(Exception ex){
ex.printStackTrace();
}
}
ManageMysql 类
/**
* 导出数据到文件
*
*/
public void OutData(String filename)
{
try {
con=ConnDB.getConn();
String sql="use radius";
String sql1="select * from "+filename+" into outfile '"+filenamemap+".txt'";
Statement stmt=con.createStatement();
stmt.execute(sql);
stmt.execute(sql1);
stmt.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}/*
* 下载数据库备份文件
*/
public void setDownload(PageContext pageContext,String filenamemap){
try {
mySmartUpload.initialize(pageContext);
mySmartUpload.setContentDisposition(null);
mySmartUpload.downloadFile("/var/lib/mysql/radius/"+filenamemap+".txt");
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (SmartUploadException e) {
e.printStackTrace();
}
}帮个忙吧各位大侠!!!!!!!
<form name="form1" action="servlet/fileDownloadServlet" method="POST">
<table align="center">
<tr>
<td width="173" align="center"><strong>数据备份</strong></td>
</tr>
<tr><td> </td></tr>
<tr><td align="center">
<select name="selectFile">
<option value="radcheck">用户信息</option>
<option value="radmanage">管理员信息</option>
<option value="clients">交换机信息</option>
<option value="usergroup">用户组信息</option>
<option value="radgroupreply">组信息</option>
</select>
</td></tr>
<tr><td> </td></tr>
<tr><td align="center">
<input type="submit" value="下载" onClick="return checkFile();">
</td></tr>
</table>
</form>处理页面 这是SERVLET的doGet方法
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
String filename = request.getParameter("selectFile");
String filenamemap = null;
if(filename.equalsIgnoreCase("radcheck"))
filenamemap = new String("用户信息");
if(filename.equalsIgnoreCase("radmanage"))
filenamemap = new String("管理员信息");
if(filename.equalsIgnoreCase("clients"))
filenamemap = new String("交换机信息");
if(filename.equalsIgnoreCase("usergroup"))
filenamemap = new String("用户组信息");
if(filename.equalsIgnoreCase("radgroupreply"))
filenamemap = new String("组信息");
filenamemap=ChangeEncoding.getEncoding(filenamemap);
try{
PageContext pageContext = JspFactory.getDefaultFactory().getPageContext(this,request,response,null,true,8192,true);
ManageSmartUpload manageSmartUpload = new ManageSmartUpload();
if(!filename.equalsIgnoreCase("clients")){
ManageMysql manageMysql = new ManageMysql(filenamemap);
File f = new File("/var/lib/mysql/radius/"+filenamemap+".txt");
if(f.exists()){
f.delete();
}
manageMysql.OutData(filename);
manageSmartUpload.setDownload(pageContext,filenamemap);
manageSmartUpload.delFile(filenamemap+".txt");
}else{
manageSmartUpload.setDownload(pageContext,filename,filenamemap);
}
//this.getServletContext().getRequestDispatcher("/err.jsp?id=11").forward(request,response);
//response.sendRedirect("../managedata.jsp");
}catch(Exception ex){
ex.printStackTrace();
}
}
ManageMysql 类
/**
* 导出数据到文件
*
*/
public void OutData(String filename)
{
try {
con=ConnDB.getConn();
String sql="use radius";
String sql1="select * from "+filename+" into outfile '"+filenamemap+".txt'";
Statement stmt=con.createStatement();
stmt.execute(sql);
stmt.execute(sql1);
stmt.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}/*
* 下载数据库备份文件
*/
public void setDownload(PageContext pageContext,String filenamemap){
try {
mySmartUpload.initialize(pageContext);
mySmartUpload.setContentDisposition(null);
mySmartUpload.downloadFile("/var/lib/mysql/radius/"+filenamemap+".txt");
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (SmartUploadException e) {
e.printStackTrace();
}
}帮个忙吧各位大侠!!!!!!!
解决方案 »
- jsp文件太大,访问报错
- 简单密码过滤问题
- 使用MyEclipse之后使用Eclipse开发时的问题
- 自定义标签中使用struts标签库
- jsp 中 "0000-00-00" 从数据库中取出出现错误
- struts连接sqlserver 2000,插入数据乱码问题
- textarea
- 高手指点迷津!jsp和asp.net哪个好???
- 98下jb5中关于jsp中显示汉字和for循环显示的问题,请教!!!
- 我想在JSP中调用,用VB写的ACTIVE控件可以吗?还有JAVA有没有打印控件?
- 在js里面只能输入英数,怎么写 清大家帮忙啊,急啊!
- hibernate用什么插件比较好?我已经装了StrutsIDE,会有冲突吗?
public abstract class ChangeEncoding {
public static String getEncoding(String str){
String gb = null;
if (str != null) {
try {
gb = new String(str.getBytes("ISO-8859-1"), "GB2312");
}
catch (Exception e) {
gb = null;
}
}
return gb;
}
}