请大家把的代码详细解释下,谢谢了:
String filename = request.getParameter("b_id");
File fileload = new File("F:/upload", filename + ".pdf");
if (!fileload.exists()) {
%> 
<script language="javascript"> 
alert("该论文不存在,可能未上传!"); 
window.location="showAThesis.jsp"; 
</script> 
<% 
//response.sendRedirect("showAThesis.jsp");
} else {
OutputStream o = response.getOutputStream();
byte b[] = new byte[500];
response.setHeader("Content-disposition",
"attachment;filename=" + filename);
response.setContentType("application/pdf");
long fileLength = fileload.length();
String length = String.valueOf(fileLength);
response.setHeader("Content_Length", length);
FileInputStream in = new FileInputStream(fileload);
int n = 0;
while ((n = in.read(b)) != -1) {
o.write(b, 0, n);
}
}

解决方案 »

  1.   

    就是根据文件在服务器上的路径、文件名,找到文件,然后通过流来读取文件!不用一行一行说吧?呵呵!
    你只要把FileInputStream搞清楚就OK了!呵呵!
      

  2.   

    着重的把else里面的说下啊 
      

  3.   

      OutputStream o = response.getOutputStream();  //获取一个输出流,
                   byte b[] = new byte[500]; // new一个btye数组,用来保存流中的数据的
                    response.setHeader("Content-disposition",   //设置头信息
                    "attachment;filename=" + filename);
                    response.setContentType("application/pdf"); //指定类型
                    long fileLength = fileload.length();  //获得文件的长度
                    String length = String.valueOf(fileLength);  //Long转换成String
                    response.setHeader("Content_Length", length);  //设置文件头信息的长度
                    FileInputStream in = new FileInputStream(fileload); //获取输入流
                    int n = 0;
                    while ((n = in.read(b)) != -1) { //in.read()表示一行行读取,读到末尾为n=-1
                        o.write(b, 0, n);  //写入文件