dannyr's Blog
ActionScript ColdFusion Delphi Flex Java .Net —— 一个都不能少!
博客园
首页
新闻
新随笔
联系
管理
订阅
随笔- 95 文章- 3 评论- 329
Flex2.0文件上传功能(Flex2.0正式版)
简介
:
新的Flex2.0类库里提供了文件类,方便了上传/下载文件。下面的程序demo演示了Flex2.0生成flash来访问本地文件,在flash里上传用户选择的文件到服务器,flash客户端可以处理文件上传进度等多个事件,服务器端是C#写的文件接收模块,把用户上传的文件保存在服务器上。
Demo演示了ProgressEvent.PROGRESS, Event.SELECT 2个事件的处理方法。
顺便提一下关于JSP的接收Flex上传文件的方法(很多网友问过这个问题),我建议使用
Jakarta Commons FileUpload
的文件上传组件,详见:
http://jakarta.apache.org/commons/fileupload/
!
测试效果
:
测试环境
:
操作系统:windows2003 Server
Flex版本:Flex 2.0
Flash版本:
flash
Player 9
WEB服务器:
IIS 6.0
.net
FrameWork 1.1
客户端代码
:FileUpload.mxml
<?
xml version="1.0" encoding="utf-8"
?>
<
mx:Application
xmlns:mx
="http://www.adobe.com/2006/mxml"
xmlns
="*"
creationComplete
="init();"
>
<
mx:Script
>
<![CDATA[
import flash.net.FileReference;
import mx.controls.Alert;
import mx.events.CloseEvent;
import flash.events.*;
private var file: FileReference;
private function init(): void{
Security.allowDomain("*");
file = new FileReference();
file.addEventListener(ProgressEvent.PROGRESS, onProgress);
file.addEventListener(Event.SELECT, onSelect);
}
private function upload(): void{
file.browse();
}
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 + " 字节";
var proc: uint = e.bytesLoaded / e.bytesTotal * 100;
bar.setProgress(proc, 100);
bar.label= "当前进度: " + " " + proc + "%";
}
private function proceedWithUpload(e: CloseEvent): void{
if (e.detail == Alert.YES){
var request: URLRequest = new URLRequest("http://localhost/JZService/WebForm1.aspx");
try {
file.upload(request);
} catch (error:Error) {
trace("上传失败");
}
}
}
]]>
</
mx:Script
>
<
mx:Canvas
width
="100%"
height
="100%"
>
<
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
="upload();"
/>
</
mx:VBox
>
</
mx:Canvas
>
</
mx:Application
>
服务端代码
:WebForm1.aspx
private
void
Page_Load(
object
sender, EventArgs e)
{
//
在此处放置用户代码以初始化页面
HttpFileCollection uploadedFiles
=
Request.Files;
string
Path
=
Server.MapPath(
"
data
"
);
for
(
int
i
=
0
; i
<
uploadedFiles.Count ; i
++
)
{
HttpPostedFile F
=
uploadedFiles[i];
if
(uploadedFiles[i]
!=
null
&&
F.ContentLength
>
0
)
{
string
newName
=
F.FileName.Substring(F.FileName.LastIndexOf(
"
\\
"
)
+
1
);
F.SaveAs(Path
+
"
/
"
+
newName);
}
}
}
绿色通道:
好文要顶
关注我
收藏该文
与我联系
posted @ 2006-11-13 12:02
dannyr|一个都不能少!
阅读(8649)
评论(10)
编辑
收藏
发表评论
1226306
回复
引用
查看
#1楼
2006-11-13 13:27
|
anikin
flash实现上传实时进度不难,能不能用Ajax实现?
回复
引用
查看
#2楼
2006-11-13 17:18
|
U2U
Flex真是Flexible
回复
引用
#3楼
2006-11-17 02:29
|
锦瑟[未注册用户]
要用ajax实时显示进度比较困难,除非重写ms默认的那个upload接口
回复
引用
查看
#4楼
[
楼主
]
2006-11-17 08:59
|
dannyr|一个都不能少!
Ajax实现上传进度条,网上有很多现成的控件,在google里用"ajax uploadfile"关键字搜索一下,有很多的!!!
回复
引用
查看
#5楼
[
楼主
]
2006-11-17 09:05
|
dannyr|一个都不能少!
关键字可以改成:“ajax FileUpload”
回复
引用
#6楼
2007-04-04 13:25
|
x_net[未注册用户]
你好,你有用过Fluorine的remoting吗。能否给个例子关于。NET通过remoting连接flex的,我试了好久没试出来。谢谢
回复
引用
#7楼
2007-10-02 18:46
|
safe6[未注册用户]
金融界英语Blog :
http://safe6.blog.hexun.com/
相册:
http://safe6.photo.hexun.com/
祝福你,天天快乐!
回复
引用
#8楼
2007-11-08 16:37
|
xiaohan[未注册用户]
请教一下,在flex2中能否用display控件实现播放实时视频的功能?比如播放网络摄像机正在监控的内容?谢谢!
回复
引用
#9楼
2008-03-09 21:17
|
zjut12345[未注册用户]
文件名为中文时候有没有试过?
回复
引用
#10楼
2008-06-15 11:55
|
老莫[未注册用户]
AJAX实现也EASY
大文件的实时进度~
用SlickUpload的HttpModule,稍加改动
就能匹配你的Flex模块
注册用户登录后才能发表评论,请
登录
或
注册
,
返回博客园首页
。
首页
博问
闪存
新闻
园子
招聘
知识库
最新IT新闻
:
·
最想要的Entity Framework功能
·
专访Jeffrey Richter:Windows 8是微软的重中之重
·
《福布斯》:谷歌进军硬件产品 难撼动苹果地位
·
美国空军拟最多购买1.8万台iPad 2
·
分析称专利之争让谷歌苹果两败俱伤
»
更多新闻...
最新知识库文章
:
·
高级编程语言的发展历程
·
如何学习一门新的编程语言?
·
学习不同编程语言的重要性
·
为什么我喜欢富于表达性的编程语言
·
计算机专业的女生为什么要学编程
»
更多知识库文章...
China-pub 2011秋季教材巡展
China-Pub 计算机绝版图书按需印刷服务
公告
我的联系方式:
MSN dannyr@163.com
QQ 563178
20060606新计数器
Detail
昵称:
dannyr|一个都不能少!
园龄:
7年7个月
粉丝:
3
关注:
0
<
2006年11月
>
日
一
二
三
四
五
六
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
搜索
常用链接
我的随笔
我的评论
我的参与
最新评论
我的标签
更多链接
我的标签
memcache
(2)
cache
(2)
DipperRiver
(1)
随笔分类
.Net技术(24)
(rss)
C++(9)
(rss)
ColdFusion(5)
(rss)
Delphi(2)
(rss)
DevExpress(1)
(rss)
Flex技术(29)
(rss)
Java(4)
(rss)
Laszlo(9)
(rss)
Spry(9)
(rss)
生活随笔(10)
(rss)
杂项(13)
(rss)
随笔档案
2009年9月 (2)
2008年6月 (1)
2008年5月 (2)
2007年9月 (2)
2007年8月 (1)
2007年7月 (3)
2007年1月 (1)
2006年12月 (2)
2006年11月 (1)
2006年10月 (6)
2006年9月 (1)
2006年8月 (4)
2006年7月 (1)
2006年6月 (4)
2006年5月 (4)
2006年4月 (2)
2006年1月 (1)
2005年12月 (1)
2005年11月 (1)
2005年10月 (2)
2005年8月 (1)
2005年7月 (1)
2005年6月 (1)
2005年5月 (1)
2005年4月 (1)
2005年3月 (2)
2005年2月 (1)
2005年1月 (3)
2004年12月 (9)
2004年11月 (9)
2004年10月 (9)
2004年9月 (3)
2004年8月 (2)
2004年7月 (6)
2004年6月 (4)
文章分类
ColdFusion
(rss)
Flex技术(3)
(rss)
文章档案
2004年6月 (3)
我的链接
Trademan
(rss)
www.k-zone.cn
(rss)
呼呼堂
(rss)
牛皮糖
(rss)
最新评论
阅读排行榜
评论排行榜
推荐排行榜