完善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();
}
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();
}
相关文章推荐
- FLEX搭配JSP下载文件的例子
- jspsmart 下载文件不支持中文 升级使其另存为时显示中文,但打开时还是乱码(已修改正常)
- 从JSP页面打开RAR文件时正常下载
- 在jsp文件中调用自定义控件(如果不存在,自动下载CAB文件安装注册)
- 用JSP下载word文件(不会直接用IE打开)
- jsp中让IE提示文件下载,而不是直接打开
- JSP 下载文件~~~防止多次调用抛异常
- jsp内存数据下载到本地--弹出的文件保存框时 两次调用action中下载方法问题
- Android 调用第三方浏览器打开网址或下载文件
- JSP下载文件,直接下载文件保存到本地,不直接打开,没有乱码
- 解决jsp下载没有进度条同时解决struts不在页面打开下载文件
- 用JSP下载word文件(不会直接用IE打开)
- JSP下载文件(word是下载还是在线打开)
- Flex中利用FileReference类下载文件的例子
- jSP程序页面中下载打开Word,Excel,powerpoint文件乱码的问题
- 超简单快速实现附件上传(各种格式文件)和下载显示(调用浏览器下载后选择可以打开的应用查看)
- flex利用socket和c++通信进行文件下载,解决Error #2176: 某些动作(如显示弹出窗口的动作)只能通过用户交互来调用
- jsp页面 java 文件下载设置禁止IE直接打开配置问题
- 下载文件的jsp(不是直接打开)
- 用JSP下载word文件(不会直接用IE打开)