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();
}