flex 文件下载和上传

思路介绍:

一、 文件上传
上传文件flex端处理:
1、上传文件第一步——打开文件。
首先需要创建一个FileReference对象:
private var myFileReference:FileReference = new FileReference();
在FileReference中有一个browse()函数,这个函数的作用就是打开一个windows文件选择框,可以选择需要上传的文件。在打开的文件选择框中可以指定选择文件的类型,这是通过FileFilter来实现的。创建一个FileFilter对象,作为browse函数的参数,这样就可以指定选择文件的类型了:
var imagesFilter:FileFilter = new FileFilter("Images(*.jpg,*.gif,*.png)", "*.jpg;*.gif;*.png");
myFileReference.browse([imagesFilter]);
2、上传文件第二步——上传文件
文件选择了之后会触发Event.SELECT事件,所以需要在myFileReference对象上注册SELECT事件的监听:
myFileReference.addEventListener(Event.SELECT, onSelect);
onSelect是一个监听函数,在这个函数中可以得到选择的文件的名字。由于安全沙箱的原因,只能得到选择的文件名,不能得到完整的文件路径。选择了需要上传的文件后,需要调用upload()函数上传选择的文件:
myFileReference.upload(uploadURL,myFileReference.name);
upload的参数uploadURL是一个URLRequest对象,这个对象指定了上传文件用的URL,myFileReference.name就是选择的文件的文件名。
3、上传文件第三步——上传进度
一般情况下,在上传文件的过程中需要显示一个表示上传进度的进度条,这样可以有一个很好的用户体验。要想显示上传进度,可以有两种方式。第一种就是监听FileReference对象的process事件,在process事件的监听函数中可以得到上传的进度,然后可以设置进度条的进度。第二种方式就是把FileReference对象与进度条对象进行绑定,进度条会自动监听FileReference对象的process事件,来显示上传进度。
4、上传文件第四步——上传结束
有的时候需要在文件上传结束后给用户一个提示,告诉用户文件已经上传结束了。这就必须得对FileReference对象的COMPLETE事件进?......

1文件下载:

var file=new FileReference();

   var downloadURL:URLRequest=new URLRequest("http://10.1.31.36/data/"+1.zip");//对应服务器上的文件路径,要发布哦。
   configureListeners(file);   //添加下载过程中的监听信息
   file.download(downloadURL);

 

private function configureListeners(dispatcher:IEventDispatcher):void
  {
            dispatcher.addEventListener(Event.CANCEL, cancelHandler);
            dispatcher.addEventListener(Event.COMPLETE, completeHandler);
            dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
            dispatcher.addEventListener(Event.OPEN, openHandler);
            dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
            dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
            dispatcher.addEventListener(Event.SELECT, selectHandler);
}

 

 

2,文件的上传

 

var file:FileReference = new FileReference();

  1. internal function initapp():void    //这是在程序初始化时对file创建监听
  2. {
  3.     file.addeventlistener(event.select,onselected);
  4.     file.addeventlistener(event.complete,oncompleted);
  5.     file.addeventlistener(progressevent.progress,onprogress);
  6. }
  7. 或者是
  8. protected override function createchildren():void //这是在程序完成之前创建监听
  9. {
  10.     file.addeventlistener(event.select,onselected);
  11.     file.addeventlistener(event.complete,oncompleted);
  12.     file.addeventlistener(progressevent.progress,onprogress); 
  13.  }

internal function onselected(evt:event):void
{
     statetext = "选择了文件" + file.name;
}

internal function oncompleted(evt:event):void
{
     statetext = "上传完毕!";
}

internal function onprogress(evt:progressevent):void
{
     statetext = "已上传 " + math.round(100 * evt.bytesloaded / evt.bytestotal) + "%";
}

//响应上传事件!

添加 file.brower()响应事件触发文件选择。

internal function onupload():void {      if(file.size > 0)      {          statetext = "正在上传文件:" + file.name;      }     var request:urlrequest = new urlrequest();     request.url=" ttp://localhost/web/uploadhandler.aspx"//这里以调用asp.net 脚本服务为例说明     file.upload(request);

 

脚本如下:将其发布到iis上或tomcat上,访问路径就是上面的地址

在.net 上创建一个网站

using System;
using System.Data;
using System.Configuration;
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 _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
      {
          string uploadFolder = "upload"; // 上传文件夹
 
          HttpFileCollection files = Request.Files;
 
          if (files.Count == 0)
          {
             Response.Write("请勿直接访问本文件");
              Response.End();
          }
 
          string path = Server.MapPath(uploadFolder);
 
          // 只取第 1 个文件
          HttpPostedFile file = files[0];
 
          if (file != null && file.ContentLength > 0)
          {
              // flash 会自动发送文件名到 Request.Form["fileName"]
              string savePath = path + "/" + Request.Form["fileName"];
              file.SaveAs(savePath);
          }
      }

}

控制上传文件大小和上传时间需要在配置文件上添加以下节点

<system.web>
        <httpRuntime maxRequestLength="409600" executionTimeout="10000" />

</system.web>

转载于:https://www.cnblogs.com/jsbrml/archive/2010/12/25/1916414.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值