下载
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.OutputStream;
import com.common.Parse_HtmlContentType;
public class DownloadFileUtil {
private String filePath;
private String fileName;
private HttpServletResponse response;
private HttpServletRequest request;
private String fileExtensions;
private byte [] b;
private DownloadFileUtil(){}
/**
* 带有参数的构造方法(下载文件)
*
* filepath为文件路径
* filename 下载到本地后的名称
* response
* @param filePath
* @param fileName
* @param response
*/
private DownloadFileUtil(String filePath,String fileName,HttpServletResponse response,HttpServletRequest request){
this.filePath=filePath;
this.fileName=fileName;
this.response=response;
this.request = request;
this.fileExtensions=fileName.substring(fileName.lastIndexOf(".")+1);
}
public static void downloadFile(String filePath,String fileName,HttpServletResponse response,HttpServletRequest request) throws FileNotFoundException,IOException {
// filename= 123.doc
DownloadFileUtil downloadFileUtil = new DownloadFileUtil(filePath,fileName,response,request);
downloadFileUtil.generateBytes();
downloadFileUtil.downLoad();
}
private void generateBytes() throws FileNotFoundException,IOException{
FileInputStream fis = new FileInputStream(filePath);
b = new byte[fis.available()];
fis.read(b);
fis.close();
}
private void downLoad() throws IOException{
String agent = request.getHeader("User-Agent").toLowerCase();
if (agent.indexOf("firefox") >0)
fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");//firefox浏览器
else if (agent != null && (agent.indexOf("msie") != -1 || (agent.indexOf("rv") != -1 && agent.indexOf("firefox") == -1)))
fileName = java.net.URLEncoder.encode(fileName, "UTF-8");//IE浏览器
else
fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");
response.reset();
String contentType = Parse_HtmlContentType.getValue(fileExtensions);
response.setContentType(contentType);
//String fileNameNew =fileName.replaceAll(" ", "_");
response.addHeader("Content-Disposition","attachment;filename=\""+ fileName+"\"");
OutputStream out = response.getOutputStream();
out.write(b);
out.close();
}
}
Parse_HtmlContentType.java
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/*
*解析Html内容类型
*/
public class Parse_HtmlContentType {
private Parse_HtmlContentType(){
};
private static final String htmlContentTypeFile = (File.separator+"htmlContentType.properties");
private static Properties p;
private static Parse_HtmlContentType instance ;
public String path = this.getClass().getResource("/").getPath();
public static String getValue(String name) throws IOException{
if(instance == null){
instance = new Parse_HtmlContentType();
InputStream in = new BufferedInputStream(new FileInputStream(instance.path+htmlContentTypeFile));
p = new Properties();
p.load(in);
}
String value = p.getProperty(name);
return value==null?p.getProperty("html"):value;
}
}
htmlContentType.properties
ez=application/andrew-inset
hqx=application/mac-binhex40
cpt=application/mac-compactpro
mathml=application/mathml+xml
doc=application/msword
bin=application/octet-stream
dms=application/octet-streamlha
lzh=application/octet-streamexe
class=application/octet-stream
so=application/octet-stream
dll=application/octet-stream
oda=application/oda
ogg=application/ogg
pdf=application/pdf
ai=application/postscript
eps=application/postscript
ps=application/postscript
rdf=application/rdf+xml
smil=application/smil
smi=application/smil
gram=application/srgs
grxml=application/srgs+xml
mif=application/vnd.mif
xul=application/vnd.mozilla.xul+xml
xls=application/vnd.ms-excel
ppt=application/vnd.ms-powerpoint
wbxml=application/vnd.wap.wbxml
wmlc=application/vnd.wap.wmlc
wmlsc=application/vnd.wap.wmlscriptc
vxml=application/voicexml+xml
bcpio=application/x-bcpio
vcd=application/x-cdlink
pgn=application/x-chess-pgn
cpio=application/x-cpio
csh=application/x-csh
dcr=application/x-director
dir=application/x-director
dxr=application/x-director
dvi=application/x-dvi
spl=application/x-futuresplash
gtar=application/x-gtar
hdf=application/x-hdf
php=application/x-httpd-php
php4=application/x-httpd-php
php3=application/x-httpd-php
phtml=application/x-httpd-php
phps=application/x-httpd-php-source
js=application/x-javascript
skp=application/x-koan
skd=application/x-koan
skt=application/x-koan
skm=application/x-koan
latex=application/x-latex
cdf=application/x-netcdf
nc=application/x-netcdf
crl=application/x-pkcs7-crl
sh=application/x-sh
shar=application/x-shar
swf=application/x-shockwave-flash
sit=application/x-stuffit
sv4cpio=application/x-sv4cpio
sv4crc=application/x-sv4crc
tgz=application/x-tar
tar=application/x-tar
tcl=application/x-tcl
tex=application/x-tex
texinfo=application/x-texinfo
texi=application/x-texinfo
t=application/x-troff
tr=application/x-troff
roff=application/x-troff
man=application/x-troff-man
me=application/x-troff-me
ms=application/x-troff-ms
ustar=application/x-ustar
src=application/x-wais-source
crt=application/x-x509-ca-cert
xhtml=application/xhtml+xml
xht=application/xhtml+xml
xml=application/xml
xsl=application/xml
dtd=application/xml-dtd
xslt=application/xslt+xml
zip=application/zip
au=audio/basic
snd=audio/basic
mid=audio/midi
midi=audio/midi
kar=audio/midi
mpga=audio/mpeg
mp2=audio/mpeg
mp3=audio/mpeg
aif=audio/x-aiff
aiff=audio/x-aiff
aifc=audio/x-aiff
m3u=audio/x-mpegurl
ram=audio/x-pn-realaudio
rm=audio/x-pn-realaudio
rpm=audio/x-pn-realaudio-plugin
ra=audio/x-realaudio
wav=audio/x-wav
pdb=chemical/x-pdb
xyz=chemical/x-xyz
bmp=image/bmp
cgm=image/cgm
gif=image/gif
ief=image/ief
jpeg=image/jpeg
jpg=image/jpeg
jpe=image/jpeg
png=image/png
svg=image/svg+xml
tiff=image/tiff
tif=image/tiff
djvu=image/vnd.djvu
djv=image/vnd.djvu
wbmp=image/vnd.wap.wbmp
ras=image/x-cmu-raster
ico=image/x-icon
pnm=image/x-portable-anymap
pbm=image/x-portable-bitmap
pgm=image/x-portable-graymap
ppm=image/x-portable-pixmap
rgb=image/x-rgb
xbm=image/x-xbitmap
xpm=image/x-xpixmap
xwd=image/x-xwindowdump
igs=model/iges
iges=model/iges
msh=model/mesh
mesh=model/mesh
silo=model/mesh
wrl=model/vrml
vrml=model/vrml
ics=text/calendar
ifb=text/calendar
css=text/css
shtml=text/html
html=text/html
htm=text/html
asc=text/plain
txt=text/plain
rtx=text/richtext
rtf=text/rtf
sgml=text/sgml
sgm=text/sgml
tsv=text/tab-separated-values
wml=text/vnd.wap.wml
wmls=text/vnd.wap.wmlscript
etx=text/x-setext
mpeg=video/mpeg
mpg=video/mpeg
mpe=video/mpeg
qt=video/quicktime
mov=video/quicktime
mxu=video/vnd.mpegurl
avi=video/x-msvideo
movie=video/x-sgi-movie
ice=x-conference/x-cooltalk