加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flex 文件下载和上传

发布时间:2020-12-15 04:28:24 所属栏目:百科 来源:网络整理
导读:思路介绍: 一、 文件上传 上传文件flex端处理: 1、上传文件第一步——打开文件。 首先需要创建一个FileReference对象: private var myFileReference:FileReference = new FileReference(); 在FileReference中有一个browse()函数,这个函数的作用就是打开

思路介绍:

一、 文件上传
上传文件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,onprogress);?
  11. ?}

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>

  • (编辑:李大同)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

      推荐文章
        热点阅读