以下是我在一外项目中的源程序,改一改就好用了//------------------------------------------------------------------------------
// Copyright 2002 XXXXXXXXXX
//
// Owner: XXXXXX
//
// Class: DownloadServlet
//------------------------------------------------------------------------------// 文件下载模块
// gms.ListStrings
// GMS_TEMP_DIRimport gms.pub.pubfun;
import gms.ListBean;
import gms.LogBean;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.sql.*;
import java.util.*;public class DownloadServlet extends HttpServlet { public static String sTempDir; // 临时目录 /**
 * init()
 */
public void init( ServletConfig config ) throws ServletException {
super.init( config );
try {
ListBean listBean = ListBean.getInstance();
sTempDir = listBean.getSGMS_TEMP_DIR();
// PropertyResourceBundle propertyresourcebundle = (PropertyResourceBundle)ResourceBundle.getBundle("gms.ListStrings");
// sTempDir = propertyresourcebundle.getString("GMS_TEMP_DIR"); }
catch ( Exception e ) {
}
}

/**
 * destroy()
 */
public void destroy() {
super.destroy();
} public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException {
doPost( req, res );
}

public void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException {
// ListBean listBean = ListBean.getInstance();
// LogBean logBean = LogBean.getInstance();

// 临时目录 D:\\gms\temp
// String sTempDir= listBean.getSGMS_TEMP_DIR();

// 源文件名
String sSourceFile = pubfun.trim( req.getParameter("SourceFile") );
// 下载后文件名
String sDownloadFile = pubfun.trim( req.getParameter("DownloadFile") );
// 文件类型
String sContentType = pubfun.trim( req.getParameter("ContentType") );
// 下载成功后转向的网页
String sOkURL = pubfun.trim( req.getParameter("OkURL") );
// 失败后转向的网页
String sErrURL = pubfun.trim( req.getParameter("ErrURL") );
// 是否删除原文件
String sDelete = pubfun.lenCheck( req.getParameter("DELE"), "T", 1 );// sSourceFile = "111.txt";
// sDownloadFile = "111.txt";
// sContentType = "";
// sOkURL = "http://23.76.98.21";
// sErrURL = "http://23.76.98.22";
sSourceFile = sTempDir + java.io.File.separator + sSourceFile; // 检查源文件
if ( !pubfun.testFile( sSourceFile ) ) {
try {
writeHtml( req, res );
} catch (Exception e)
{
}
} try {
if ( sContentType == null )
res.setContentType( "application/octet-stream" );
else
if ( sContentType.length() == 0 )
res.setContentType( "application/octet-stream" );
else
res.setContentType( sContentType );

res.setHeader("Content-Disposition","attachment;filename=" + sDownloadFile + ";");

ServletOutputStream stream = res.getOutputStream();
BufferedInputStream fif = new BufferedInputStream(new FileInputStream( sSourceFile ));
int data;
while((data = fif.read()) != -1) {
stream.write( data );
}
fif.close();
stream.close();

// 删除原文件
if ( sDelete.equals("T") )
deleteFile( sSourceFile ); try {
writeHtml( req, res );
} catch (Exception e)
{
}
}
catch ( Exception e ) {
// logBean.outError( "Error:" + e  );
writeHtml( req, res );
}
} /**
 * 删除文件
 */
public void deleteFile( String sSourceFile ) {
try {
File fif = new File( sSourceFile );
fif.delete();
}
catch ( Exception e ) {
}
}
public void writeHtml(HttpServletRequest req, HttpServletResponse res) throws IOException {
res.setContentType("text/html");
PrintWriter pw = res.getWriter();
pw.println("<HTML>");
pw.println("<HEAD>");
pw.println("</HEAD>");
pw.println("<BODY>");
pw.println("<SCRIPT language=\"JavaScript\">");
pw.println("window.close();");
pw.println("</SCRIPT>");
pw.println("</BODY>");
pw.println("</HTML>");
}

}