【发布时间】:2013-04-22 00:12:31
【问题描述】:
我的问题是我有一个程序可以制作文件并将其流式传输给用户,我有两个问题:
1)首先如何更改文件名和类型(x.sql)
2) 如果在制作文件时出现异常,我想将用户重定向到错误页面,因为当我们想写入 servlet 中的输出流时,我的方法的返回类型为 void!
我的程序是这样的:
@RequestMapping(value = "/test/{jobid}")
public void dumpData(@PathVariable("jobid") long jobid, HttpServletResponse response) {
try {
response.setContentType("application/octet-stream");
ServletOutputStream out = response.getOutputStream();
String downloadOutput = "";
// AM I ABLE TO SET FILENAME SO THE USER DOWNLOAD THE FILE WITH THAT NAME ?
// DOES SETHEADER HELP ME IN THIS CASE ?
... (making downloadOutput String by values coming from somewhere)
out.write(downloadOutput.getBytes("UTF-8"));
out.flush();
out.close();
} catch(SomeException e){
//WHEN THE RETURN TYPE IS VOID HOW TO REDIRECT USER TO ERROR PAGE IN CASE OF SOME PROBLEM ?
//(INFO:)IF WE DEFINE STRING AS RETURN TYPE THE PROGRAM WILL GET EXCEPTION
}
【问题讨论】:
-
一旦您开始将文件内容写入响应,您将无法重定向到错误页面。如果在此之前发生错误,您可以执行
response.sendRedirect(url)
标签: spring jakarta-ee servlets spring-mvc