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

来源:互联网 发布:网络神话魔法圣皇 编辑:程序博客网 时间:2024/05/17 01:57

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

原创粉丝点击