代码如下
<%@page import="java.io.FileInputStream"%>
<%@page import="java.io.OutputStream"%><%@ page
  contentType="text/html; charset=utf-8"%>
<%
  String fileName = "freebsd.iso";
  String filePath = "e:\\";  out.clear();
  response.reset();
  response.setContentType("application/x-download");
  response.addHeader("Content-Disposition", "attachment;filename=" + fileName);
  OutputStream os = response.getOutputStream();
  try {
  FileInputStream fis = new FileInputStream(filePath + fileName);
  try {
  byte[] buffer = new byte[1024 * 10];
  for (int read; (read = fis.read(buffer)) != -1;) {
  os.write(buffer, 0, read);
  }
  } finally {
  fis.close();
  }
  } finally {
  os.close();
  }
%>执行后,文件已经下载过来了,但是内容是空的,请教是什么原因啊?

解决方案 »

  1.   

    没有读取到内容吧。。
    byte[] buffer = new byte[1024 * 10];
      while(read = fis.read( buffer,0 ,1024 * 10 )) != -1;) {
      os.write(buffer, 0, read);
      }看看行么
      

  2.   

    os.write(buffer, 0, buffer.length);
      

  3.   

    为什么用for循环呢?
    个人觉得用while循环好一些
    int length=0;
    while((read = fis.read(buffer)) != -1)
    {
       os.write(buffer, 0, length);
    }
      

  4.   


    忘了点,中间要加一个
    while((read = fis.read(buffer)) != -1)
    {
       os.write(buffer, 0, length);
       os.flush();
    }
      

  5.   


     FileInputStream fis = new FileInputStream(filePath + fileName);这根本就读不到你的文件。
    应该写作: FileInputStream fis = new FileInputStream(filePath + "/" +fileName);