用FLEX实现屏幕快照及下载
用FLEX实现屏幕快照及下载 这种方式,在服务器端不会在磁盘上生成
图片 FLEX代码 public
function pr
intMap():void{ var en:JPEGEncoder = new JPEGEncoder(100); //压缩图片,100是指质量 var ba:ByteArray=en.encode(ImageSnapshot.captureBitmapData(this.parent.parent));//将控件转为BitmapData后再转为ByteArray var request:URLRequest = new URLRequest("http://localhost:8080/servlet/upload.jsp"); request.method="POST"; request.data=ba; request.contentType = "application/octet-stream"; navigateToURL(request,"_blank"); //因为要浏览器触发下载
事件,所以就不用异步方式打开连接了 } upload.jsp代码(如果把application/x-download改成image/jpeg就可以不弹出保存提示框了) <%@page language="java" contentType="application/x-download" import="java.io.*,java.net.*" pageEncoding="gb2312"%><% response.setContentType("application/x-download"); //内容是下载 response.setHeader("Content-Disposition","attachment;filename=" + "test.jpg");//文件名,可以进一步处理 //读数据 BufferedInputStream inputStream = new BufferedInputStream(request.getInputStream()); //FileOutputStream outputStream = new FileOutputStream(new File(filePath)); OutputStream outputStream = response.getOutputStream(); byte [] bytes = new byte[1024]; int v; //写数据 while((v=inputStream.read(bytes))>0){ outputStream.write(bytes,0,v); } outputStream.flush(); outputStream.close(); inputStream.close(); %>