http://www.blogjava.net/youngturk/archive/2012/09/11/387509.html
首先下载 commons-fileupload-1.2.1.jar和commons-io-1.1.jar
flex端代码:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
xmlns="*"
creationComplete="init();">
<mx:Script>
<![CDATA[
import flash.events.*;
import mx.controls.Alert;
import mx.events.CloseEvent;
import mx.managers.CursorManager;
private var file:FileReference;
private var byteArray:ByteArray;
private var bitmapData:BitmapData;
private var loader:Loader=new Loader();
private function init():void
{
Security.allowDomain("*");
file=new FileReference();
file.addEventListener(Event.COMPLETE, fileReferenceCompleteHandler);
file.addEventListener(Event.SELECT, fileReferenceSelectHandler);
}
//选择上传的图片
private function choose():void
{
var imageTypes:FileFilter=new FileFilter("Images (*.jpg, *.jpeg, *.png)", "*.jpg;*.jpeg;*.png");
var allTypes:Array=new Array(imageTypes);
file.browse(allTypes);
// file.browse();
}
private function toUpload():void
{
if (bitmapData == null)
{
Alert.show("请您先选择要上传的图片");
}
else
{
Alert.show("上传 " + file.name + " (共 " + Math.round(file.size) + " 字节)?", "确认上传", Alert.YES | Alert.NO, null, proceedWithUpload);
}
}
//监听文件上传状态
private function onProgress(e:ProgressEvent):void
{
lbProgress.text=" 已上传 " + e.bytesLoaded + " 字节,共 " + e.bytesTotal + " 字节";
var proc:uint=e.bytesLoaded / e.bytesTotal * 100;
bar.setProgress(proc, 100);
bar.label="当前进度: " + " " + proc + "%";
if (e.bytesLoaded == e.bytesTotal)
{
CursorManager.removeBusyCursor();
}
}
//上传图片到服务器
private function proceedWithUpload(e:CloseEvent):void
{
if (e.detail == Alert.YES)
{
//进度监听
file.addEventListener(ProgressEvent.PROGRESS, onProgress);
var request:URLRequest=new URLRequest("http://localhost:8080/FileUploaded");
//设置鼠标忙状态
CursorManager.setBusyCursor();
try
{
file.upload(request);
Alert.show("恭喜你,上传成功");
}
catch (error:Error)
{
Alert.show("上传失败");
trace("上传失败");
}
}
}
//上传完成调用
private function completeHandle(event:Event):void
{
Alert.show("恭喜你,上传成功");
}
//载入本地图片
private function fileReferenceCompleteHandler(e:Event):void
{
byteArray=file.data;
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderCompleteHandler);
loader.loadBytes(byteArray);
}
//图片载入完成显示在预览框中
private function loaderCompleteHandler(e:Event):void
{
var bitmap:Bitmap=Bitmap(loader.content);
bitmapData=bitmap.bitmapData;
img.source=bitmap;
}
//选择文件动作监听
private function fileReferenceSelectHandler(e:Event):void
{
file.removeEventListener(ProgressEvent.PROGRESS, onProgress);
file.load();
}
]]>
</mx:Script>
<mx:Canvas width="100%"
height="100%"
x="10"
y="170"
fontSize="15">
<mx:VBox width="100%"
horizontalAlign="center">
<mx:Label id="lbProgress"
text="上传"/>
<mx:ProgressBar id="bar"
labelPlacement="bottom"
themeColor="#F20D7A"
minimum="0"
visible="true"
maximum="100"
label="当前进度: 0%"
direction="right"
mode="manual"
width="200"/>
<mx:Button label="上传文件"
click="toUpload();"/>
</mx:VBox>
<mx:Panel width="469"
height="392"
verticalGap="0"
horizontalAlign="center"
verticalAlign="middle"
x="408"
y="129"
layout="absolute">
<mx:Button label="选择文件"
click="choose();"
x="178"
y="9"/>
<mx:Image id="img"
width="400"
height="300"
x="36"
y="44"/>
</mx:Panel>
</mx:Canvas>
</mx:Application>
java servlet端代码
package upload;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
/**
* @author lqw
*/
public class FileUploaded extends HttpServlet {
// 定义文件的上传路径
private String uploadPath = "d:\\a\\";
// 限制文件的上传大小
private int maxPostSize = 100 * 1024 * 1024;
public FileUploaded() {
super();
}
public void destroy() {
super.destroy();
}
protected void processRequest(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
System.out.println("to upload picture !");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
// 保存文件到服务器中
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(4096);
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setSizeMax(maxPostSize);
try {
List fileItems = upload.parseRequest(request);
Iterator iter = fileItems.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (!item.isFormField()) {
String name = item.getName();
System.out.println(name);
try {
item.write(new File(uploadPath + name));
// SaveFile s = new SaveFile();
// s.saveFile(name);
} catch (Exception e) {
e.printStackTrace();
}
}
}
} catch (FileUploadException e) {
e.printStackTrace();
System.out.println(e.getMessage() + "结束");
}
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
processRequest(request, response);
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
processRequest(request, response);
}
public String getServletInfo() {
return "Short description";
}
}
web.xml 文件内容:
<?xml version = '1.0' encoding = 'windows-1252'?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee">
<servlet>
<servlet-name>FileUploaded</servlet-name>
<servlet-class>upload.FileUploaded</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FileUploaded</servlet-name>
<url-pattern>/FileUploaded</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>35</session-timeout>
</session-config>
<mime-mapping>
<extension>html</extension>
<mime-type>text/html</mime-type>
</mime-mapping>
<mime-mapping>
<extension>txt</extension>
<mime-type>text/plain</mime-type>
</mime-mapping>
</web-app>
FLEX端如果出现安全沙箱的问题:是由于在tomcat环境下没有声明应用程序能被外部访问.
在程序的部署文件夹下添加crossdomain.xml文件.文件内容为:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*" secure="false"/>
<allow-http-request-headers-from domain="*" headers="*" secure="false"/>
</cross-domain-policy>
相关推荐
Flex4.6+java+servlet上传图片例子+图片上传预览
Flex+Java Servlet处理文件上传 关于上传文件
1、利用Flex作为上传文件界面,通过servlet地址连接服务器端 2、Servlet处理上传文件过程 3、通过配置文件web.xml传递参数 4、达到Flex和Servlet进行交互,上传文件
Flex 图片上传 实例 源码Flex图片上传实例
Flex中获取组件快照的ByteArray,然后调用JavaServlet将ByteArray导出成图片。
用flex实现图片上传带预览功能。各位可以试试。
flex批量上传图片带预览功能flex批量上传图片带预览功能flex批量上传图片带预览功能
FLEX调用Servlet连接数据库源码
flex上传文件夹插件,可以方便的上传文件夹,可以添加到支持flash的环境中。
Flex和Servlet结合使用,文件上传、下载
批量上传,图片以缩略图排列,双击查看大图;设了回收站,通过拖动就可删除或还原需上传的图片;可为每个图片起别名,该别名会作为参数传到后台;通过 servlet实现上传。
Flex+Java Servlet文件上传实例
详尽的介绍了flex for arcgisserver开发,适合初次接触flex开发的程序员
本文简单介绍了Flex如何通过servlet连接数据库(Access)。使用的是给后台传递数据的方法。 本文开发使用的软件: Flex3-eclipse plugin Tomcat 6.0 Microsoft access 2003 Eclipse 3.3 各个软件的安装和...
flex 打开本地图片并进行显示 var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, this.onLoadByted); loader.loadBytes(this.fileReference.data);
前台用flex,后台用java. 上传图片时先裁剪,可预览,然后上传到服务器
自己开发的flash上传demo,flex上传技术,无刷新上传,显示进度,后台处理程序为php,且支持批量上传。
Flex 上传文件控件 (带java服务端) 可以设置多文件还是单文件 设置上传大小 显示上传进度条