package com.yssh.utils;
|
|
import com.yssh.config.InitConfig;
|
|
import javax.servlet.ServletOutputStream;
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.FileInputStream;
|
import java.net.URLEncoder;
|
import java.util.Date;
|
|
public class WebUtils {
|
public final static String POINT = ".";
|
|
public static void download(String file, String fileName, boolean inline, HttpServletResponse res) throws Exception {
|
if (StringUtils.isEmpty(fileName)) {
|
fileName = DateUtils.parseDateToStr(DateUtils.YYYYMMDDHHMMSS, InitConfig.getDate());
|
}
|
fileName = URLEncoder.encode(fileName, "UTF-8").replace("+", "%20");
|
String dispose = inline ? "inline" : "attachment";
|
|
res.setHeader("Content-Disposition", dispose + "; filename*=UTF-8''" + fileName);
|
res.setCharacterEncoding("UTF-8");
|
|
String ext = getExtension(file);
|
String mime = getMime(ext);
|
res.setContentType(mime);
|
|
ServletOutputStream outputStream = res.getOutputStream();
|
FileInputStream fileInputStream = new FileInputStream(file);
|
|
int len = 0;
|
byte[] bytes = new byte[1024];
|
while ((len = fileInputStream.read(bytes)) != -1) {
|
outputStream.write(bytes, 0, len);
|
outputStream.flush();
|
}
|
|
fileInputStream.close();
|
outputStream.close();
|
}
|
|
public static String getExtension(String fileName) {
|
if (StringUtils.isEmpty(fileName)) {
|
return "";
|
}
|
|
int idx = fileName.lastIndexOf(POINT);
|
if (idx == -1) {
|
return "";
|
}
|
|
return fileName.substring(idx).toLowerCase();
|
}
|
|
public static String getMime(String ext) {
|
switch (ext) {
|
case ".tif":
|
case ".tiff":
|
return "image/tiff";
|
case ".img":
|
return "application/x-img";
|
case ".gif":
|
return "image/gif";
|
case ".jpg":
|
case ".jpeg":
|
return "image/jpeg";
|
case ".png":
|
return "image/png";
|
case ".mp3":
|
return "audio/mp3";
|
case ".mp4":
|
return "video/mpeg4";
|
case ".avi":
|
return "video/avi";
|
case ".mpg":
|
case ".mpeg":
|
return "video/mpg";
|
case ".wav":
|
return "audio/wav";
|
case ".wma":
|
return "audio/x-ms-wma";
|
case ".swf":
|
return "application/x-shockwave-flash";
|
case ".wmv":
|
return "video/x-ms-wmv";
|
case ".rm":
|
return "application/vnd.rn-realmedia";
|
case ".rmvb":
|
return "application/vnd.rn-realmedia-vbr";
|
case ".js":
|
return "application/x-javascript";
|
case ".css":
|
return "text/css";
|
case ".asp":
|
return "text/asp";
|
case ".mht":
|
return "message/rfc822";
|
case ".jsp":
|
case ".htm":
|
case ".html":
|
case ".xhtml":
|
return "text/html";
|
case ".xml":
|
case ".svg":
|
return "text/xml";
|
case ".txt":
|
return "text/plain";
|
case ".dbf":
|
return "application/x-dbf";
|
case ".mdb":
|
return "application/msaccess";
|
case ".pdf":
|
return "application/pdf";
|
case ".ppt":
|
case ".pptx":
|
return "application/x-ppt";
|
case ".doc":
|
case ".docx":
|
return "application/msword";
|
case ".xls":
|
case ".xlsx":
|
return "application/vnd.ms-excel";
|
case ".dgn":
|
return "application/x-dgn";
|
case ".dwg":
|
return "application/x-dwg";
|
case ".ext":
|
return "application/x-msdownload";
|
default:
|
return "application/octet-stream";
|
}
|
}
|
}
|