您的位置:首页 > Web前端 > JavaScript

完善flex调用jsp打开和下载文件的例子

2011-05-16 13:59 239 查看
前面的flex打开和下载文件的例子在文件正常存在的情况下不会有错误,但是如果文件不存在,那么会报404错误,并且会冲掉flex页面,这是很不友好的,特别是在一个已经登录的flex应用程序里,这会导致用户退出flex应用,需要重新登录。现在我们来处理这个问题,在打开和下载文件之前,我们先调用一个servlet判断文件在服务器上是否存在。然后存在才去打开或者下载,不存在则提示用户“文件不存在”。

flex代码:

//检查要下载的文件名是否存在
private function getSvrInfo():void{
var request:URLRequest=new URLRequest("/UploadFile");
request.method=URLRequestMethod.POST;
var variables:URLVariables = new URLVariables();
variables.filePath="/uploadFile/deli.jpg";
variables.method="checkFileExist";
request.data = variables;
var loader:URLLoader=new URLLoader();
loader.load(request);
loader.addEventListener(Event.COMPLETE, checkFileExistBack);
}

//根据服务器返回的文件是否存在信息处理。

private function checkFileExistBack(event : Event):void{
var str : String = ((event.target) as URLLoader).data;
if(str=="0"){
Alert.show("文件不存在");
}else{
export();//此处即调用前面那个例子的代码进行文件打开和下载。
}
}

//JAVA部分检查文件是否存在的代码

public void checkFileExist(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String filePath = request.getParameter("filePath");
int flag = false;
if(filePath!=null && !filePath.equals(""));
{
String[] s = URLDecoder.decode(filePath).split("/");
String uploadPath = getServletContext().getRealPath("uploadFile")+"/";
if(uploadPath!=null){
File[] files = new File(uploadPath).listFiles();
for (int i = 0; i < files.length; i++){
if(files[i].getName().equals(s[s.length-1])){
flag=1;
break;
}
}
}

}
out.print(flag);
out.flush();
out.close();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: