最近由于项目的需求,对flash做了一番研究,并结合Asp.net实现RIA开发。以下是用flash作为客户端(文件上传),通过asp.net作为服务器端(实现文件接收)的一个实例:
一、客户端基本实现流程:
1、flash设计界面如下图(1)所示:
图(1)
2、flash运行界面如下图(2)所示:
图(2)
3、在flash中单击“浏览”按钮,弹出以下对话框(图(3)),然后选将要上传的文件;
图(3)
4、选择好要上传的文件然后点击打开;(比如我选择guizu.wmv)图(4):
图(4)
5、然后点击上传,接着执行上传过程(图(5)):
图(5)
二、flash核心代码如下:
////import flash.net.FileReference;
////import flash.net.FileReferenceList;
////
////var fileRefList:FileReferenceList = new FileReferenceList();
////var totalBytes:Number = 0;
////var uploadedBytes:Number = 0;
////var uploadedBytes2:Array;
////var filesCompleted:Number = 0;
////var totalFiles:Number = 0;
////var fileRefListener:Object = new Object();
////
////var allTypes:Array = new Array();
////var videoTypes:Object = new Object();
////videoTypes.description = "视频文件(*.wmv; *.asf; *.avi; *.mpg; *.3pg;*.mov)";
////videoTypes.extension = "*.wmv; *.asf; *.avi; *.mpg; *.3pg;*.mov";
////allTypes.push(videoTypes);
////
////uploadBtn.enabled = false;
////_root.progressBar.visible = false;
////
////
////function rePaintProBar (pb, xCor, yCor) {
////_root.destroyObject(pb);
////_root.createObject("ProgressBar",pb,0);
//// _root.progressBar.move(xCor,yCor);
////_root.progressBar.label = "正在上传 %3%% ";
////_root.progressBar.labelPlacement = "right";
////_root.progressBar._width = 359;
////}
////
////fileRefListener.onSelect = function (fileRefList:FileReferenceList):Void {
////uploadBtn.enabled = true;
////rePaintProBar("progressBar", 109.0, 41.0);
////var list:Array = fileRefList.fileList;
//// var fileRef:FileReference;
////totalBytes = 0;
//// for(var i:Number = 0; i < list.length; i++) {
//// fileRef = list[i];
////totalBytes += fileRef.size;
////txtFilePath.text = fileRef.name;
//// }
////}
////
////fileRefListener.onCancel = function (fileRef:FileReference):Void {
////uploadBtn.enabled = false;
////}
////
////fileRefListener.onOpen = function (fileRef:FileReference):Void {
////txt_FilePath.label = fileRef.name;
////}
////
////fileRefListener.onProgress = function (fileRef:FileReference, bytesLoaded:Number, bytesTotal:Number):Void {
////progressBar.mode = "manual";
////var temp:Number = bytesLoaded - uploadedBytes2[fileRef.name]
////uploadedBytes2[fileRef.name] = bytesLoaded;
////uploadedBytes += temp;
////progressBar.setProgress(uploadedBytes, totalBytes);
////txtUploaded.text = GetSizeType(uploadedBytes);
////txtTotal.text = GetSizeType(totalBytes);
////
////}
////
////fileRefListener.onComplete = function (fileRef:FileReference):Void {
////filesCompleted++;
////if(filesCompleted == totalFiles)
////FinishedUpload();
////}
////
////fileRefListener.onHTTPError = function(fileRef:FileReference):Void {
////trace("onHTTPError:"+ fileRef.name);
////}
////
////fileRefListener.onIOError = function(fileRef:FileReference):Void {
//// trace("onIOError: " + fileRef.name);
////
////}
////
////fileRefListener.onSecurityError = function(fileRef:FileReference, errorString:String):Void {
//// trace("onSecurityError: " + fileRef.name + " errorString: " + errorString);
////}
////
////fileRefList.addListener(fileRefListener);
////
////browseButn.clickHandler = function () {
////fileRefList.browse(allTypes);
////}
////
////uploadBtn.clickHandler = function () {
////var list:Array = fileRefList.fileList;
////var fileRef:FileReference;
////if(uploadBtn.label == "上传")
////{
////browseBtn.enabled = false;
////uploadBtn.label = "取消";
////totalFiles = list.length;
////filesCompleted = 0;
////uploadedBytes = 0;
////uploadedBytes2 = [];
////txtUploadNum.text = "已上传:";
////txtFileTotal.text = "文件大小:";
////for(var i:Number = 0; i < list.length; i++) {
////fileRef = list[i];
////fileRef.addListener(fileRefListener);
////uploadedBytes2[fileRef.name] = 0;
////if(uploadPage != undefined)
////fileRef.upload(uploadPage);
////}
////}
////else
////{
////for(var i:Number = 0; i < list.length; i++) {
////fileRef = list[i];
////fileRef.cancel();
////}
////uploadBtn.label = "上传";
////browseBtn.enabled = true;
////}
////}
////
////function FinishedUpload()
////{
////uploadBtn.enabled = false;
////uploadBtn.label = "上传";
////browseBtn.enabled = true;
////if(completeFunction != undefined)
////{
////getURL('javascript:' + completeFunction);
////}
////}
////
////function GetSizeType(size:Number)
////{
////if(size < 1024)
////return int(size*100)/100 + " bytes";
////if(size < 1048576)
////return int((size / 1024)*100)/100 + "KB";
////if(size < 1073741824)
//// return int((size / 1048576)*100)/100 + "MB";
//// return int((size / 1073741824)*100)/100 + "GB";
////}
三、服务器端Asp.net实现核心代码如下:
////using System;
////using System.Data;
////using System.Configuration;
////using System.Collections;
////using System.Web;
////using System.Web.Security;
////using System.Web.UI;
////using System.Web.UI.WebControls;
////using System.Web.UI.WebControls.WebParts;
////using System.Web.UI.HtmlControls;
////
////public partial class Upload : System.Web.UI.Page
////{
//// protected void Page_Load(object sender, EventArgs e)
//// {
//// string saveToFolder = "Upload";
//// HttpFileCollection uploadedFiles = Request.Files;
//// string Path = Server.MapPath(saveToFolder);
//// 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);
//// }
//// }
//// }
本实例目前还只实现了文件上传功能,还未对文件种种业务需求的判断与处理以及文件上传后的数据处理等等,待今后在项目中具体扩充......
分享到:
相关推荐
[多文件上传][显进度条][JQ+FLASH+ASP.NET]
asp.net单文件带进度条上传,不属于任务控件,也不是flash类型的上传,完全是asp.net、js、css实现上传。源码为开发测试版,需要使用的亲需要注意修改配置文件。详见配套博客:...
flash+asp.net 图片上传源代码 非常好用。。。有进度条。多上传 上传前预览 下载完了记得回复。。返还全部分还+1哦!
使用VS2005与Flash 做的一个上传并且有进度条的一个上传实例。
本文介绍的asp.net单文件带进度条上传,不属于任务控件,也不是flash类型的上传,完全是asp.net、js、css实现上传,需要的朋友可以参考下
使用C#写的图片批量上传插件,使用了FLASH,实现图片预览功能。
asp.net+flash实现单个文件上传(含进度条),上传时只能上传.3gp文件类型,可以通过Flash CS 修改fileUpload.fla来修改可以上传的文件类型.
基于flash上传文件,可显示进度条.图片预览.net服务端保存文件 带完整的演示代码
asp.net 3.0 + Flash上传文件 带进度条
环境 Asp.Net Mvc3 Vs2010 使用的脚本 jquery-1.5.1.min.js 、jquery.flash.js、 jquery.jqUploader.js 配置Webconfig ...
用FLASH做为进度条实现上传显示上传进度
asp.net多文件上传一直是一个难题,现在找到一个多文件上传的Flash插件,分享给大家。文件上传带进度条,无刷新上传。
利用Asp.net结合flash实现的文件上传,并显示上传进度条 fileUpload.fla为flash源文件
通过flash组件上传文件。可以多文件上传,显示上传进度,停止上传,继续上传等。。。服务器断支持asp,asp.net,php
asp.net jquery结合flash多文件上传 支持文件多选,选择之后页面显示文件名称和文件大小 有进度条提示 上传之后队列自动消失
深入剖析ASP.NET组件设计]一书第三章关于ASP.NET运行原理讲述的补白 asp.net 运行机制初探(httpModule加载) 利用反射来查看对象中的私有变量 关于反射中创建类型实例的两种方法 ASP.Net应用程序的多进程模型 NET委托...
Uploadify是JQuery的一个上传插件,带进度显示, 支持多文件上传。不过官方提供的实例时php版本的. 【官网上flash-based是免费的,html5版本是收费的5美金】 附件提供的是asp.net(C#)实例,免费和大家一起共享。讨论...
选择多个文件上传,显示上传速度,进度条,纯正的FLASH代码,使用的是HTTP协议,所以客户端,服务端都不需要安装任何组件 因为是模仿FORM表单提交,所以支持所有的网页动态语言:ASP PHP ASP.NET JSP等 ...
内容索引:.NET源码,上传下载,上传文件 Flash Upload 版多文件上传程序,结合了Mootools,实现了上传进度条适时显示,支持多种格式的文件上传,当然这个你可以在配置文件中设置的,目前上传界面是英文的,更可贵的是...