当前位置:编程学习 > C#/ASP.NET >>

asp.net silverlight批量上传控件实现方法

    /// <summary>
    /// 文件的状态
    /// </summary>
    internal enum filestatus
    {
        /// <summary>
        /// 准备就绪,等待上传
        /// </summary>
        ready = 0,
        /// <summary>
        /// 正在上传中
        /// </summary>
        uploading = 1,
        /// <summary>
        /// 上传成功
        /// </summary>
        success = 2,
        /// <summary>
        /// 上传中出现异常
        /// </summary>
        error = 3,
        /// <summary>
        /// 上传操作被用户中止
        /// </summary>
        cancel = 4,
        /// <summary>
        /// 已被用户删除
        /// </summary>
        delete = 5
    }

原理
用silverlight实现多选批量上传,利用与网页特效的交互来控制显示,并将其封装成asp教程.net服务端控件。
总体结构

首先用户进入页面,执行批量上传控件的服务端代码,生成html代码(包括silverlight的html代码,这样就完成了
对silverlight的初始化)。用户在silverlight上选择完文件,开始上传,这时用silverlight去访问当前页面,在地址
上加上标示变量,来告诉服务端这是一个上传请求;在批量上传控件的服务端判断是否上传请求,如果是则进行文
件操作,完成后显示上传结果(成功或者出现异常),silverlight端获取后决定下一步动作(传输当前文件的剩余部
分、传输下一个文件、传输结束等动作),同时调用javascript方法更新页面的显示信息,同时也可调用javascript
方法来postback回传触发服务端事件。
界面

控件最开始只会显示一个“上传”按钮,点击后显示浮动层,点击“选择文件”后弹出文件选择框,支持多选,选择完
毕点击“上传文件”进行上传,上传完毕后点击“确定”进行回传。

silverlight端的实现
silverlighthtml显示其实就是一个<object></object>,结构类似:
<object id='obj' data='data:application/x-silverlight-2,' type='application/x-silverlight-2' >
<param name='source'value='abc.xap' />           
<param name='background' value='white' />           
<param name='minruntimeversion' value='3.0' />
<param name='autoupgrade' value='false' />
<param name='windowless' value='true'/>
<param name='initparams' value='a=1,b=2' />
</object>
其中source表示silverlight编译生成的xap文件的路径;minruntimeversion表示客户端的silverlight最低运行版本,这里设置成
版本3.0,低于3.0的均不能正常运行该批量上传控件;autoupgrade表示是否打开自动更新,这里关闭自动更新;windowless
 表示是否可以由其它html元素遮住silverlight,这里设置成可以被遮住;initparams表示自定义参数,可以有多个,以逗
号隔开,该控件中用到的参数有:
clientid:批量上传控件的由 asp.net教程 生成的服务器控件标识符,用于唯一标识用。
filter:文件名筛选器字符串,形如"图片文件 (*.gif;*.jpg)|*.gif;*.jpg"
filemaxcount:最大能上传的文件个数,为空表示不限
filemaxlength:单个文件最大长度,单位字节,为空表示不限 
showsubmit:是否显示“确定”按钮 
datapacketsize:上传时每次发送的数据包大小,单位kb
subdirectoryname:上传的文件在临时文件夹中存储时,所在的子文件夹名
 

xaml文件比较简单,如下所示: 

<grid width="240" background="#f0f8f0" layoutupdated="grid_layoutupdated"> 
        <button content="选择文件" height="23" horizontalalignment="left" x:name="btnchoose" fontfamily="arial,simsun"
fontsize="12" verticalalignment="top" width="75" margin="2,3,0,0" click="btnchoose_click" /> 
        <button content="上传文件" height="23" horizontalalignment="left" x:name="btnupload" fontfamily="arial,simsun"
fontsize="12" verticalalignment="top" width="75" margin="83,3,0,0" click="btnupload_click"/> 
        <button content="确 定" height="23" horizontalalignment="left" x:name="btnok" fontfamily="arial,simsun"
fontsize="12" verticalalignment="top" width="75" margin="164,3,0,0" click="btnok_click"/> 
    </grid> 

就是三个按钮,分别为“选择文件”“上传文件”“确定”。

补充:asp.net教程,安装和部署
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,