源码的编辑:
- <?xml version="1.0" encoding="utf-8"?>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
- <mx:Script>
- <![CDATA[
- import mx.graphics.codec.JPEGEncoder;
- import mx.graphics.ImageSnapshot;
- private function saveAs(){
- var en:JPEGEncoder = new JPEGEncoder(100); //压缩图片,100是指质量
- var ba:ByteArray=en.encode(ImageSnapshot.captureBitmapData(img));//将控件转为BitmapData后再转为ByteArray
- var request:URLRequest = new URLRequest("/TestForLCDS/servlet/UploadServlet");
- request.method="POST";
- request.data=ba;
- request.contentType = "application/octet-stream"; //这个很重要,设置成流数据
- navigateToURL(request,"_blank"); //因为要浏览器触发下载事件,所以就不用异步方式打开连接了
- }
- ]]>
- </mx:Script>
- <mx:Button x="228" y="10" label="另存为本地图片" click="saveAs()"/>
- <mx:Image id="img" x="10" y="10" source="img.jpg" width="200" height="200" scaleContent="false"/>
- </mx:Application>
后台java
- public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- response.setContentType("application/x-download"); //内容是下载
- response.setHeader("Content-Disposition","attachment;filename=" + "test.jpg");//文件名,可以进一步处理
- //读数据
- BufferedInputStream inputStream = new BufferedInputStream(request.getInputStream());
- 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();
- }
- }
没有评论:
发表评论