其实这样的上传源代码在网上已经是很多了。但是考到本地总是不成功。本人好不容易将这个工程实现了。心情一大畅快!
首先我们看一下客户端。客户端是很简单的主要用到了FileReference
客户端代码如下:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="init();" >
<mx:Script>
<![CDATA[
import flash.net.FileReference;
import mx.controls.Alert;
import mx.events.CloseEvent;
import flash.events.*;
private var file : FileReference;
private var uploadURL : URLRequest;
private function init() : void{
Security.allowDomain("*");
file = new FileReference();
file.addEventListener(ProgressEvent.PROGRESS, onProgress);
file.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA,onUPLOAD_COMPLETE_DATA);
file.addEventListener(Event.SELECT, onSelect);
uploadURL = new URLRequest();
uploadURL.url = "http://localhost:9090/New/php/NewUPLoader.php";
}
private function upload() : void{
var imageTypes:FileFilter = new FileFilter("Images (*.jpg, *.jpeg, *.gif, *.png)", "*.jpg; *.jpeg; *.gif; *.png");
var allTypes:Array = new Array(imageTypes);
file.browse(allTypes);
}
private function onSelect(e : Event) : void{
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 + " 字节";
}
private function proceedWithUpload(e : CloseEvent) : void{
if (e.detail == Alert.YES){
file.upload(uploadURL);
}
}
private function onUPLOAD_COMPLETE_DATA(evt:DataEvent):void
{
Alert.show(evt.data.toString());
}
]]>
</mx:Script>
<mx:Canvas width="100%" height="100%">
<mx:VBox width="100%" horizontalAlign="center">
</mx:VBox>
<mx:Button label="上传文件" click="upload();" y="91"/>
<mx:Label id="lbProgress" text="上传" x="87.5" y="26"/>
</mx:Canvas>
</mx:Application>
其中要注意的一点是uploadURL.url = "http://localhost:9090/New/php/NewUPLoader.php";
这里面我们要注意。因为我的服务器按在了本机上所以我的访问地址是localhost。服务器默认的端口号是8080.但是我将她的端口改为了9090.这个需要在apach/conf/httpd.conf中使用listen 的值改为9090即可!
然后New是我的服务器工程名。php/NewUPLoader.php是我在New工程下的应用程序路径。
然后 我们看看服务器端的代码:
<?php
// Flash 上传文件的信息默认的名称是Ϊ Filedata
当然这个 可以改变,只要在上传的时候使用fileRerence.upLoad(uriRequest,'你想要的上传标识名称');
$fileName = $_FILES["Filedata"]["name"];
$file = $_FILES["Filedata"]["tmp_name"];
$path = "uploadFiles/";
if (move_uploaded_file($file, $path . $fileName)){
echo 1;
}else{
echo 0;
}
服务器成功发来1,这个时候客户端由于监听了dataEvent事件就可以将event.data输出。如果是1那么就上传成功。如果不是就失败!
还有一点每次修改应用程序的代码,服务器都要重启。有时要有点耐心。等带服务器启动完毕在发送请求。
启动是否成功就用http://localhost:9090/index.html来检查。这个成功别的就可以访问!
分享到:
相关推荐
这是一个flex客户端选择文件然后上传的例子,会java的人看了就明白了
范例使用supermap iclient for Flex客户端裁剪地图。
Flex 与服务器端通信 demo 包括flex 源码 和c#服务器端源码
解决Flex开发的swf服务器端最新版本,客户端IE浏览器需要手动设置,才可以显示服务器端最新的SWF版本问题
flex客户端和服务端分页控件,后台使用java实现数据的传送,flex客户端调用服务端的webservices服务进行数据的展现~~ 内附myeclipse项目和flex项目·~ 分别导入可运行,注意端口的修改~
mxml中用到的json类相关文件 博文链接:https://javacrazyer.iteye.com/blog/708463
flex是妇科客户端编程的很好变现形式。
Eclipse通过wtp插件对j2ee ...wtp,blazeds,flex builder plugin使得可以在eclipse 的一个”dynamic web project” 中同时完成j2ee web app 的开发和flex mxml,as3的开发,并利用blazeds在flex 客户端访问server 端的功能
NULL 博文链接:https://morry.iteye.com/blog/387138
每个服务器最多可以处理30000个客户端连接完全protobuf,可以支持异构C ++ / C#/ Nodejs / etc客户端Java客户端中的同步和异步接口支持批处理和组操作:getAll,putAll,removeAll 支持服务器端的同步和异步数据...
Flex和服务器端数据通信笔记,Flex和服务器端数据通信笔记,Flex和服务器端数据通信笔记,
在本项目中,客户端与服务器端均采用Java为开发语言,使用C/S模式进行开发,实现客户端与服务器端得直接通信,采用服务器与多个客户端的对话(Chat)。当一个客户端发送Quit时,就退出聊天室。同时服务器端并把该...
在eclipse_的一个项目中同时开发j2ee模块和flex_客户端模块
flex3 客户端缓存 module 解决方案 swf文件缓存
在flex中显示服务器端的图片可以使用Image控件的source属性,但是这个条件必须是客户端可以访问到的有效的URL地址。如果图片存储在数据库中,直接使用source属性是无法显示图片的。这种情况下可以使用flex中的...
原文:《使用easy eclipse,flex ...l 在 j2ee 视图中 release 产生的 war 文件中包含了最终的服务器代码和 flex 应用编译后的 swf 文件 , 可以直接部署 . 压缩包里是详细步骤、以及最终生成的eclipse 模板项目信息
动态分段是交通行业常用的功能之一,按照以往的实现方式,该功能通常都是在服务端来...由于富客户端的出现,很多功能都已可以移植到客户端来实现,现介绍使用SuperMap iClient 6R for Flex在客户端实现动态分段功能。
描述了不同客户端实现与java服务器端的通信及代码示例,并对这几种方式进行了对比。
flex客户端导出excel所需的类库jar包(as3xls-1.0.1.swc)以及实例代码.支持mx.controls.DataGrid、mx.controls.AdvancedDataGrid、spark.components.DataGrid的excel导出。很不错的。