
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
package froala.editor.utils.view;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.tika.Tika;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.servlet.view.AbstractView;
import egovframework.com.cmm.util.EgovResourceCloseHelper;
import egovframework.rte.fdl.cmmn.exception.EgovBizException;
@Component
public class DownloadView extends AbstractView {
private final static Logger LOGGER = LoggerFactory.getLogger(DownloadView.class);
@Override
protected void renderMergedOutputModel(Map<String, Object> model,
HttpServletRequest request, HttpServletResponse response) throws EgovBizException, IOException {
String path = (String) model.get("path");
String mime = (String) model.get("mime");
File file = new File(path);
response.setContentLength((int)file.length());
String filename = (String) model.get("origin_file_nm");
String userAgent = request.getHeader("User-Agent");
String conVstr = null;
if (userAgent.contains("MSIE")) {
conVstr = URLEncoder.encode(filename,"UTF-8");
} else if (userAgent.contains("Trident")) {
conVstr = URLEncoder.encode(filename,"UTF-8");
} else if(userAgent.contains("Chrome")) {
conVstr = new String(filename.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1);
} else if(userAgent.contains("Opera")) {
conVstr = new String(filename.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1);
} else if (userAgent.contains("Mozilla")){
conVstr = new String(filename.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1);
} else {
conVstr = new String(filename.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1);
}
// PDF 파일일 경우 바로 열기
Tika tika = new Tika();
mime = mime == null ? tika.detect(file) : mime;
switch (mime) {
// pdf로 다운로드 받도록 하기 위해 주석
// case "application/pdf":
// response.setContentType("application/pdf");
// break;
default:
response.setHeader("Content-Disposition", "attachment; fileName=\"" + conVstr + "\";");
response.setContentType("application/octet-stream;charset=UTF-8");
break;
}
response.setHeader("Content-Transfer-Encoding", "binary");
OutputStream out = response.getOutputStream();
FileInputStream fis = null;
try{
fis = new FileInputStream(file);
FileCopyUtils.copy(fis, out);
} finally {
EgovResourceCloseHelper.close(fis);
}
out.flush();
}
}