前台Flex文件:UploadSample.mxml,其代码如下所示:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
 3     <mx:Style>
 4         global 
 5         {
 6             fontSize : 12;
 7         }
 8     </mx:Style>
 9     
10     <mx:Script>
11         <![CDATA[
12             // 先搞 1 个 FileReference
13             private var file:FileReference = new FileReference();
14             
15             // 上传状态指示, 和下面的文本框绑定
16             [Bindable]
17             private var stateText:String = "请选择一个文件上传";
18             
19             // createChildren 比 creationComplete 事件更早发生, 省的注册事件侦听, 直接在这里写了
20             protected override function createChildren():void 
21             {
22                 super.createChildren();
23                 file.addEventListener(Event.SELECT, file_select);
24                 //file.addEventListener(Event.COMPLETE, file_complete);
25                 file.addEventListener(ProgressEvent.PROGRESS, file_progress);
26                 file.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, file_complete);
27             }
28             
29             // 选择 1 个文件的事件
30             private function file_select (e:Event):void 
31             {
32                 stateText = "选择了文件 " + file.name;
33             }
34             
35             // 上传完毕后的事件
36             private function file_complete (e:Event):void 
37             {
38                 stateText = "上传完毕";
39             }
40             
41             private function file_progress (e:ProgressEvent):void 
42             {
43                 stateText = "已上传 " + Math.round(100 * e.bytesLoaded / e.bytesTotal) + "%";
44             }
45             // 先判断一下文件大小, 再上传, FileService.aspx 就是上传地址
46             private function upload ():void 
47             {
48                 if (file.size > 0) 
49                 {
50                     stateText = "正在上传 " + file.name;
51                     var request:URLRequest = 
52                         new URLRequest("http://localhost:1851/WebSite1/FileService.aspx");
53                     file.upload(request);
54                 }
55             }
56             
57             
58         ]]>
59     </mx:Script>
60     
61     <mx:Panel width="250" height="112" layout="vertical" title="上传示例"
62         verticalAlign="middle" horizontalAlign="center" >
63         <mx:HBox>
64             <mx:TextInput text="{stateText}" width="160" editable="false"/>
65             <mx:Button label="浏览" click="file.browse();"/>
66         </mx:HBox>
67         <mx:HBox>
68             <mx:Button label="上传" click="upload();"/>
69         </mx:HBox>
70     </mx:Panel>
71 </mx:Application>
72 

服务器端asp.net文件:FileService.aspx.cs,其代码如下所示:

 1 using System;
 2 using System.Data;
 3 using System.Configuration;
 4 using System.Collections;
 5 using System.Web;
 6 using System.Web.Security;
 7 using System.Web.UI;
 8 using System.Web.UI.WebControls;
 9 using System.Web.UI.WebControls.WebParts;
10 using System.Web.UI.HtmlControls;
11 
12 public partial class FileService : System.Web.UI.Page
13 {
14     protected void Page_Load(object sender, EventArgs e)
15     {
16         string uploadFolder = "upload"; // 上传文件夹
17 
18         HttpFileCollection files = Request.Files;
19 
20         if (files.Count == 0)
21         {
22             Response.Write("请勿直接访问本文件");
23             Response.End();
24         }
25 
26         string path = Server.MapPath(uploadFolder);
27 
28         // 只取第 1 个文件
29         HttpPostedFile file = files[0];
30 
31         if (file != null && file.ContentLength > 0)
32         {
33             // flash 会自动发送文件名到 Request.Form["fileName"]
34             string savePath = path + "/" + Request.Form["fileName"];
35             file.SaveAs(savePath);
36         }
37     }
38 }

说明:
客户端Flex使用URLRequest对象请求一个服务器端的连接,在服务器端使用HttpFileCollection对象接收客户端的请求。flash 会自动发送文件名到 Request.Form["fileName"]。
效果如下所示:

转自:http://www.cnitblog.com/Lalo/archive/2007/12/28/38199.aspx

改进:增加选择文件类型过滤功能

代码

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" backgroundGradientAlphas="[1.0, 1.0]" backgroundGradientColors="[#15F6F9, #4FD6F8]" fontSize="13" viewSourceURL="srcview/index.html">
    <mx:Script>
        <![CDATA[
            //先搞一个FileReference
            private var file:FileReference=new FileReference();
            
            //
            private var imagesFilter:FileFilter = new FileFilter("Images", "*.jpg;*.gif;*.png");
            private var docFilter:FileFilter = new FileFilter("Documents", "*.pdf;*.doc;*.txt");
             
            //上传状态指示,和下面的文本框绑定
            [Bindable]
            private var stateText:String="请选择一个上传文件";
            //CreateChilden比CreateComplete更早发生,省得注册事件监听,直接在这里写了
            protected override function createChildren():void
            {
                super.createChildren();
                file.addEventListener(Event.SELECT,onSelect);
                file.addEventListener(ProgressEvent.PROGRESS,onProgress);
                file.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA,onComplete);
            }
            //选择1个文件的事件
            private function onSelect(evt:Event):void
            {
                //stateText = "选择了文件 " + file.name;
                stateText = file.name;
            }
            //上传完毕后的事件
            private function onComplete(evt:DataEvent):void
            {
                stateText="上传完毕";
                
            }
            //上传进度事件
            private function onProgress(evt:ProgressEvent):void
            {
                stateText="已上传"+Math.round(100*evt.bytesLoaded/evt.bytesTotal)+"%";
            }
            //先判断一下文件大小,再上传,FileService.aspx就是上传地址
            private function onUpload():void
            {
                if(file.size>0)
                {
                    stateText="正在上传"+file.name;
                    var request:URLRequest=new URLRequest();
                    request.url="http://localhost:5233/UploadSample/FileService.aspx";
                    file.upload(request);
                    
                }
            }
            //触发选择文件对话框
            private function onBrower():void
            {
                file.browse([imagesFilter,docFilter]);
            } 
        ]]>
    </mx:Script>
    
    <mx:Panel x="50.5" y="10" width="376" height="168" layout="absolute" title="上传示例:">
        <mx:HBox x="59" y="33">
            <mx:TextInput text="{stateText}" editable="false" width="160"/>
            <mx:Button label="浏 览" click="onBrower();"/>
        </mx:HBox>
        <mx:HBox x="131" y="80">
            <mx:Button label="上 传" click="onUpload();"/>
        </mx:HBox>
    </mx:Panel>
    
</mx:Application>

转载于:https://www.cnblogs.com/qiantuwuliang/archive/2010/04/06/1705529.html

【推荐】Flex+asp.net上传文件相关推荐

  1. Asp.net上传文件至目录

    Asp.net上传文件,把文件存入至目录中.限制上传文件大小,限制上传文件格式.存取得原来文件名,创建新的文件名. 把文件临时存入临时目录中,处理完毕,最后再移至真正目录. 参考代码:  //上传时, ...

  2. EXTJS+ASP.NET上传文件带实时进度条代码

    一,文件夹 二,upLoad.cs是继承IHttpModule的类: usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usin ...

  3. Asp.net上传文件限制,在大于5M的时候出现DNS解析错误,解决方法。

    在利用 private void Upload_Click(object sender, System.EventArgs e)   {    if(this.File1.PostedFile.Con ...

  4. ASP.Net上传文件带进度条、显示剩余时间!

    近段时间因为开发隐私存储网站,采用ASP.Net 2.0在处理上传文件,因为上传的文件比较大,为了改善用户体验,所以自己重写了ASP.Net 的标准上传控件,实现显示进度条,百分比,平均速度,剩余时间 ...

  5. ASP.NET上传文件出现“404-找不到文件或目录”的解决办法

    ASP.NET的程序部署在IIS7环境下,上传大文件时出现"404-找不到文件或目录"的错误,如下图: <system.web> <httpRuntime use ...

  6. ASP.NET上传文件的三种基本方法

    ASP.NET依托.net framework类库,封装了大量的功能,使得上传文件非常简单,主要有以下三种基本方法. 方法一:用Web控件FileUpload,上传到网站根目录. Test.aspx关 ...

  7. ASP.NET上传文件对文件类型的高级判断

    以前发过一个.NET上传文件的方法的,不过那个方法中对文件类型的判断只是对后缀名来进行判断的,这样假如我把一个txt文本文件的后缀名改为jpg了也可以上传,这样无意中就造成了安全问题. 刚刚从网上找了 ...

  8. asp.net上传文件时提示,不支持给定路径的格式解决方法

    asp.net的上传图片,在部分浏览器中,提示"不支持给定路径的格式" .该问题是由于浏览器的有些设置会把图片的本地完整路径发送到服务器端,而服务器端在写代码的时候,却是按单独的文 ...

  9. ASP.NET——上传文件超过了最大请求长度

    IIS默认最大的URL长度为:4kb:当我们上传附件时,URL请求被IIS过滤,发现大于4M就拒绝请求,所以导致我们大于4kb无法上传并抛出错误. 解决方法一:在IIS里面,打开我们站点--请求筛选- ...

最新文章

  1. SpringMVC中@RequestHeader
  2. php项目打开快捷方式,克隆一个新项目的快捷方式_PHP教程
  3. IDLE 策略算法 放置奇兵 小破船翻船记录(悬空岛——冒险(航海))
  4. 我XXXX!!!够了!!!从github拉到dockerhub,再用daocloud加速下载
  5. 帮助方老师使用固态硬盘安装win10,赚了150软妹币(但是他赖账了!)
  6. MySQL连接方式:长连接或者短连接
  7. 基于Python语言使用RabbitMQ消息队列(一)
  8. Android之实现RecyclerView拖拽效果和固定部分元素不进行交换位置
  9. java 按照概率生成随机数_JAVA 根据设置的概率生成随机数的方法
  10. java界面编程(9) ------ 列表框
  11. 天津东软实训第八天------倒排索引
  12. php常用函数最全总结
  13. 手机连接hp打印机打印
  14. linux nfs共享目录访问速度慢,linux之间共享文件夹选nfs还是选samba--
  15. win7系统激活最简单方法
  16. 学习自旋电子学的笔记00:杂谈(闲话) OOMMF软件的安装
  17. 常见的ICE工具和集成开发环境
  18. 计算机专业背景的大学,不要求专业背景的计算机专业!
  19. 二叉树的非递归遍历详解
  20. Illustrator “图像裁切”功能如何使用?

热门文章

  1. 【Linux】Linux简单操作之文件管理
  2. idea springmvc_SSM三大框架使用Maven快速搭建整合(SpringMVC+Spring+Mybatis)
  3. iOS的KVO实现剖析
  4. LeetCode.3-最长无重复字符子串(Longest Substring Without Repeating Characters)
  5. activemq 消息阻塞优化和消息确认机制优化
  6. Web SCADA 电力接线图工控组态编辑器
  7. F#探险之旅(三):命令式编程(上)
  8. java.lang.NoSuchMethodError: org.springframework.web.context.support.XmlWebApplicationContext.getEnv
  9. 混合托管:第三代云计算
  10. PropertiesFactoryBean PropertyPlaceholderConfigurer 区别