Java下载文件的疑问,很难缠....做过的朋友进来看下,谢谢

bc_pc 2008-10-20 08:58:16
我的要求是:如果在java写文件的时候一但出现异常 就不会有下载对话框 而是直接跳转到指定页 下面是我的代码
TSV文件下载共同类:
public String tsvFileDownload(List<Object []> tsvList,String id,HttpServletResponse response,int bufferSize) throws IOException{
//異常Flg
String flg = null;
OutputStream out;
//TsvFileName 取得
String fileName = getFileName(id);

response.setHeader("Content-Type", "application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes("Windows-31j"), "Windows-31j"));
response.setContentLength(bufferSize);
out = response.getOutputStream();

OutputStreamWriter outputwriter = new OutputStreamWriter(out, "Windows-31j");
try {
//TsvFile 形成します
this.tsvFileStart(outputwriter,tsvList);
} catch (Exception e) {
// TODO Auto-generated catch block
flg = "1";
e.printStackTrace();
}
outputwriter.flush();
outputwriter.close();
out.flush();
out.close();
return flg;

}
/**
* TsvFileName獲得
*
* @param id
* @return fileName (String)
*/
public String getFileName(String id){
logger.debug("Tsv ファイル名前の得ること Start");
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
Date today = new Date();
String systemDate = df.format(today);
String fileName;
String connertor = "_";
String afterName = ".tsv";
fileName = id + connertor + systemDate + afterName;
logger.debug("Tsv ファイル名前の得ること Stop");
return fileName;
}
/**
* TsvFileData獲得
* @param out
* @param tsvList
* @return out
* @throws Exception
*/
public OutputStreamWriter tsvFileStart(OutputStreamWriter out,
List<Object []> tsvList) throws Exception{
logger.debug("Tsv データ の得ること Start");
String enter = "\r\n";
String foucs = "\t";

//Listのデータを取り出します
for(int i = 0;i < tsvList.size();i++){
Object [] data = (Object [])tsvList.get(i);
for(int a = 0;a < data.length;a++){
if(data[a].toString().contains("\r\n")){
out.write(data[a].toString().replace("\r\n", ""));
out.write(foucs);
}else{
out.write(data[a].toString());
out.write(foucs);
}
}
out.write(enter);
}
//Tsvファイルデータ
logger.debug("Tsv データ の得ること Stop");
return out;

}

下面是调用Tsv下载共同类的java文件(部分):
try {
String exeTsv=tsvDownLoad.tsvFileDownload(textList,log,response,dlNumber*1024*1024);
if(exeTsv.equals("1")){
messages= new ActionMessages();
message = new ActionMessage("E0033");
messages.add(ActionMessages.GLOBAL_MESSAGE, message);
saveMessages(request,messages);
logger.error("TSV出力処理に失敗しました。");
return mapping.findForward("logmanagelist");
}
} catch (IOException e) {
e.printStackTrace();
}
...全文
344 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
bc_pc 2008-10-23
  • 打赏
  • 举报
回复
好像我的语言表达能力是有点问题,都看不懂,那这样吧。我直接问问题,不要看我的代码了。用java做文件下载的模块,在这个模块中,如果在写文件的时候出现异常,那么就让页面显示一条错误信息,就是struts的ActionMessages,怎么可以做到?
DiscussQuestions 2008-10-22
  • 打赏
  • 举报
回复
呵呵!~!不是很懂楼主的意思!~!
期望有高手来给楼主解决!~!
顶一下!~!
ZHANGBINFLY 2008-10-21
  • 打赏
  • 举报
回复
up,学习,虽然没看懂
tiyuzhongxin789 2008-10-21
  • 打赏
  • 举报
回复
仔细阅读了楼主的代码,没有看出什么端倪……
你所说的“下载对话框”,应该是在下载时浏览器中显示的吧?那是个客户端的对话框,你又如何在服务器端去控制呢?
lgstart 2008-10-21
  • 打赏
  • 举报
回复
up to no.1
accp206 2008-10-20
  • 打赏
  • 举报
回复
仔细阅读了楼主的代码,没有看出什么端倪……
你所说的“下载对话框”,应该是在下载时浏览器中显示的吧?那是个客户端的对话框,你又如何在服务器端去控制呢?
或许是我没明白楼主的意思吧?呵呵。

67,537

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧