[FW:] Writing big files to ServletOutputStream

类别:Java 点击:0 评论:0 推荐:
Problem when writing big files to ServletOutputStream 转自:http://www.theserverside.com/discussions/thread.tss?thread_id=29261

Posted By: Anand Rajagopal on October 06, 2004 @ 10:18 AM

I am using the following code to write files to servlet output stream. The problem is the browser is not downloading the entire file when the file size grows above 10 MB. Any help would be greatly helpful.

FileInputStream fis = new FileInputStream(new File(fileName));
response.setHeader("Content-Disposition:", "attachment;filename=" + fileName );
BufferedInputStream bis= new BufferedInputStream(fis);
ServletOutputStream sos = response.getOutputStream();
byte[] buffer = new byte[5000];
response.setHeader("Content-Length:", String.valueOf (bis.available()));
while (true) {
   int bytesRead = bis.read(buffer, 0, buffer.length);
   if (bytesRead < 0)
   break;
   sos.write(buffer, 0, bytesRead);
}
fis.close();
sos.flush();
sos.close();

     Message #141567 Mark as noisy Mark as noisy Mark as noisy Post reply Post reply Post reply Go to top Go to top Go to top Problem when writing big files to ServletOutputStream Posted By: Krishnan Muthusubramanian on October 06, 2004 @ 11:45 AM in response to Message #141542 0 replies in this thread response.setHeader("Content-Length:", String.valueOf (bis.available()));The 'available' method of InputStream does not return the number of bytes that avilable :). Check the Java Doc for this method.

Try new File(fileName).length() instead

本文地址:http://com.8s8s.com/it/it14590.htm