// View
import org.springframework.web.servlet.view.AbstractView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Map;
public class TextFileDownloadView extends AbstractView {
@Override
protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws Exception {
String text = (String) model.get("text");
String fileName = (String) model.get("fileName");
setContentType("text/plain; charset=utf-8");
response.setContentType(getContentType());
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\";");
response.setHeader("Content-Transfer-Encoding", "binary");
InputStream in = new ByteArrayInputStream(text.getBytes());
response.setContentLength(in.available());
OutputStream out = response.getOutputStream();
try {
org.apache.commons.io.IOUtils.copy(in, out);
} catch (Exception e) {
e.printStackTrace();
} finally {
out.flush();
in.close();
out.close();
}
}
}
// Bean 등록
<beans:bean id="downloadTextFileView" class="com.jigi.TextFileDownloadView" />
// Controller
@RequestMapping(value = "/textFileDownload")
public ModelAndView textFileDownload(@ModelAttribute("myVO") MyVO myVO, HttpServletRequest request, ModelMap model) throws Exception {
String text = "";
try {
// Do Sothing....
text = myService.get(myVO);
} catch (Exception e) {
// Do Exception....
text = "오류";
} finally {
model.addAttribute("text", text);
model.addAttribute("fileName", "file.txt");
return new ModelAndView("downloadTextFileView");
}
}
최신 댓글