java 下载
Java文件下载的几种方式< type="text/javascript"> document.body.oncopy = function() { if (window.clipboardData) { setTimeout(function() { var text = clipboardData.getData("text"); if (text && text.length > 300) { text = text + "\r\n\n本文来自CSDN博客,转载请标明出处:" + location.href; clipboardData.setData("text", text); } }, 100); } }
publicHttpServletResponse download(String path, HttpServletResponse response) {
try{
//path是指欲下载的文件的路径。
File file= newFile(path);
//取得文件名。
String filename=file.getName();
//取得文件的后缀名。
String ext=filename.substring(filename.lastIndexOf( " . " )+ 1 ).toUpperCase();
//以流的形式下载文件。
InputStream fis= newBufferedInputStream( newFileInputStream(path));
byte [] buffer= new byte ;
fis.read(buffer);
fis.close();
//清空response
response.reset();
//设置response的Header
response.addHeader( " Content-Disposition " ," attachment;filename= " + newString(filename.getBytes()));
response.addHeader( " Content-Length " ,"" +file.length());
OutputStream toClient= newBufferedOutputStream(response.getOutputStream());
response.setContentType( " application/octet-stream " );
toClient.write(buffer);
toClient.flush();
toClient.close();
}catch(IOException ex) {
ex.printStackTrace();
}
returnresponse;
}
public voiddownloadLocal(HttpServletResponse response)throwsFileNotFoundException {
//下载本地文件
String fileName= " Operator.doc " .toString();//文件的默认保存名
//读到流中
InputStream inStream= newFileInputStream( " c:/Operator.doc " ); //文件的存放路径
//设置输出的格式
response.reset();
response.setContentType( " bin " );
response.addHeader( " Content-Disposition " ," attachment; filename=\ ""+ fileName +" \ "" );
//循环取出流中的数据
byte [] b= new byte [ 100 ];
intlen;
try{
while((len=inStream.read(b))> 0 )
response.getOutputStream().write(b,0 , len);
inStream.close();
}catch(IOException e) {
e.printStackTrace();
}
}
public voiddownloadNet(HttpServletResponse response)throwsMalformedURLException {
//下载网络文件
intbytesum= 0 ;
intbyteread= 0 ;
URL url= newURL( " windine.blogdriver.com/logo.gif " );
try{
URLConnection conn=url.openConnection();
InputStream inStream=conn.getInputStream();
FileOutputStream fs= newFileOutputStream( " c:/abc.gif " );
byte [] buffer= new byte [ 1204 ];
intlength;
while((byteread=inStream.read(buffer))!= - 1 ) {
bytesum+=byteread;
System.out.println(bytesum);
fs.write(buffer,0 , byteread);
}
}catch(FileNotFoundException e) {
e.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}
}
//支持在线打开文件的一种方式
public voiddownLoad(String filePath, HttpServletResponse response,booleanisOnLine)throwsException {
File f= newFile(filePath);
if( ! f.exists()) {
response.sendError( 404 ," File not found! " );
return ;
}
BufferedInputStream br= newBufferedInputStream( newFileInputStream(f));
byte [] buf= new byte [ 1024 ];
intlen= 0 ;
response.reset();//非常重要
if(isOnLine) {//在线打开方式
URL u= newURL( " file:/// " +filePath);
response.setContentType(u.openConnection().getContentType());
response.setHeader( " Content-Disposition " ," inline; filename= " +f.getName());
//文件名应该编码成UTF-8
}else{//纯下载方式
response.setContentType( " application/x-msdownload " );
response.setHeader( " Content-Disposition " ," attachment; filename= " +f.getName());
}
OutputStream out=response.getOutputStream();
while((len=br.read(buf))> 0 )
out.write(buf,0 , len);
br.close();
out.close();
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/seng3018/archive/2010/02/22/5316178.aspx
页:
[1]