我们知道Flex对于本地的限制比AIR要大,当我们想保存一个由Flex生成的文件必须借由服务器来完成,现在有一个需求就是,用户想保存Flex生成的图片在本地,我们要完成这个过程,必须先将Flex生成的图片转换为通用的数据格式,即ByteArray,然后由后台程序帮助写文件,形式上类似先上传,再下载,只不过中间不用保存实际的物理文件。
好了废话这么多把代码贴上来吧
Flex端
<?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 servlet
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();
}
分享到:
相关推荐
通过以上详细解释,我们可以清晰地了解到如何在Flex中使用`FileStream`和`ByteArray`来实现图片的另存为功能。这不仅有助于理解代码逻辑,也为我们提供了实际应用场景和技术要点,有助于开发者更好地掌握相关技术...
### Flex开发:解决要点与技巧 #### 一、Flex与ActionScript 3.0 **Flex** 是一种用于构建和部署跨平台富互联网应用程序(RIA)的强大框架,它由Adobe公司开发并维护。Flex的核心优势在于它能够创建高度交互性的用户...
### FLEX教程知识点详解 #### 1. FLEX概述 - **FLEX介绍**:FLEX是一种用于构建跨平台富互联网...通过以上知识点的学习,读者可以全面地掌握Flex及其相关技术栈的使用方法,从而能够开发出高质量的富互联网应用程序。
通过`flex-direction`属性可以改变它们的方向。 3. **Flex项(Flex Items)**:是Flex容器的直接子元素,它们在主轴上排列。`flex-wrap`属性决定是否允许换行,以及换行的方向。 4. **Flex属性**:主要有以下几种...
flex-messaging-core-4.7.3.jar 最新版,下载了好长时间才下载下来,亲测可用!
这个压缩包"Flex 工程源码--EmployeeMgmt-Flex.7z"包含了名为"EmployeeMgmt-Flex"的Flex项目源代码,很可能是用于员工管理的系统。下面我们将详细探讨Flex的相关知识点。 1. **Flex框架**:Flex是一套完整的开发...
在IT行业中,Flex是一种流行的富互联网应用程序(RIA)开发框架,由Adobe公司提供,主要用于构建交互性强、用户体验良好的Web应用。本项目“flex带时分秒日历---完善版”显然是一个基于Flex技术的日历组件,它不仅...
通过分析和运行这个"MXML"文件,用户可以学习到如何在Flex中实现这种Wipe Effect,并可能了解到其他相关的Effect和它们的组合使用方法。 总结起来,这个资源包提供了一个学习Flex中Effect使用的实例,包括实际的...
这个名为“spring-flex-1.5.0.M2-dist.zip”的压缩包,包含了Spring Flex 1.5.0.M2版本的所有必要组件,使得开发者能够快速地开发和部署基于Flex的客户端应用。 在Spring Flex 1.5.0.M2中,核心组件`spring-flex-...
8. **常见问题和解决策略**:列出在实现过程中可能遇到的问题以及对应的解决方法。 通过这篇文章和配套的文档,读者应该能够学习到一个完整的流程,从创建和部署Web服务到使用Flex客户端进行通信,这在开发富互联网...
文档还涉及了在同一个项目中混合使用Flex3和Flex4组件的方法,以及如何将Flex3项目迁移到Flex4。最后,文档介绍了Flash Builder 4的一些新特性,如状态编辑器、getter/setter/event handler代码生成器、性能分析器和...
非常好DEMO参考,这个项目已经转到Apache名下了,最新的版本1.2,308个例子,已经全站打包,搜索:flex-tour-de-flex-component-explorer-1.2-308demo。开源代码http://flex.apache.org/download-tourdeflex.html
Flex提供了一个名为Effect类的基类,开发者可以通过继承这个类并覆盖其方法来创建自定义特效。同时,Flex还提供了EffectManager类来管理和控制特效的执行。例如,Fade特效用于改变组件的透明度,Slide特效则用于改变...
资源包含flex-2.5.4+bison-2.4.1+mingw,此外包含本人写的测试源码,编译命令及详细过程,另附一些有用的文章pdf,用于编译原理课程学习。详细使用参考文章:...
4. 创建 Bitmap 对象:切割完成后,可以创建 Bitmap 对象,将 BitmapData 设置为其源,然后将其添加到舞台上显示。 二、人物行走动画 人物行走动画涉及帧序列或精灵表(Sprite Sheet)的使用。在 Flex 中,你可以...
maven-flex2-plugin-support-1.0.jar
maven-flex2-plugin-1.3-sources.jar