微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

telerik upload 在silverlight 3中的使用

打开SL工程添加引用Telerik.Windows.Controls.dll and Telerik.Windows.Controls.Input.dll.
以及在Page.xaml中添加RadUpload控件

<telerikInput:RadUpload  
  x:Name="radUpload"  
  Filter="All Files(*.*)|*.*"  
  FilterIndex="3"  
  IsAutomaticUpload="False"  
  OverwriteExistingFiles="True"  
  UploadServiceUrl="../RadUploadHandler.ashx"  
  TargetFolder="MyStorageFolder"  
  FileUploaded="radUpload_FileUploaded"  
  >  
</telerikInput:RadUpload>  
 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Telerik.Windows.Controls;
using Telerik.Windows;
using System.Windows.Media.Imaging;

namespace TelerikDemo
{
    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();
        }

        private void radUpload_FileUploaded(object sender,FileUploadedEventArgs e)
        {
            RadUploadSelectedFile uploadedFile = e.SelectedFile;
            // CustomData is a Dictionary property that stores the new file name in value of a key.
            // This key is set in the RadUploadHandler.ashx.cs
            string newFileName = e.HandlerData.CustomData["NewFileName"].ToString();

            if (this.radUpload.CurrentSession.FileNameUploadItem.ContainsKey(uploadedFile.Name))
            {
                RadUploadItem item = this.radUpload.CurrentSession.FileNameUploadItem[uploadedFile.Name];
                if (item != null)
                {
                    // Retrieve the TextBlock that will hold new file name
                    FrameworkElement element = GetCustomTagControl(item,"NewFileName");
                    if (element != null)
                    {
                        TextBlock textBlock = element as TextBlock;
                        if (textBlock != null)
                        {
                            textBlock.Text = newFileName;
                            textBlock.Visibility = Visibility.Visible;
                        }
                    }
                }
            }
        }

        private static FrameworkElement GetCustomTagControl(DependencyObject control,string name)
        {
            for (int i = 0; i < VisualTreeHelper.GetChildrenCount(control); i++)
            {
                DependencyObject child = VisualTreeHelper.GetChild(control,i);
                FrameworkElement element = child as FrameworkElement;

                if (element != null)
                {
                    if (0 == string.Compare(element.Name,name,StringComparison.InvariantCultureIgnoreCase))
                    {
                        return element;
                    }
                }
                element = GetCustomTagControl(child,name);
                if (element != null)
                {
                    return element;
                }
            }
            return null;
        }
    }
}
打开RadUploadDemo.Web并且添加引用Telerik.Windows.RadUploadHandler.dll. 
在这之后,右击RadUploadDemo.Web选择添加新item,添加一个名为RadUploadHandler.ashx的 Generic Handler,也添加一个文件夹名为MyStorageFolder

打开RadUploadHandler.ashx文件,你的handler需继承Telerik.Windows.RadUploadHandler并且重写一部分重要的函数

<%@ WebHandler Language="C#" Class="RadUploadHandler" %>

using System;
using System.Web;
using System.Collections.Generic;

public class RadUploadHandler : Telerik.Windows.RadUploadHandler {

    private string newFileName = string.Empty;

    //public override void Processstream()
    //{
    //    if (this.IsNewFileRequest())
    //    {
    //        this.ResultChunkTag = string.Format("[{0;yyyymmdd.hhmmss}]",DateTime.Now);
    //    }
    //    else if (this.FormChunkTag != null)
    //    {
    //        this.ResultChunkTag = this.FormChunkTag;
    //    }
    //    base.Processstream();
    //}

    public override Dictionary<string,object> GetAssociatedData()
    {
        Dictionary<string,object> dict = base.GetAssociatedData();
        if (!string.IsNullOrEmpty(newFileName))
        {
            dict.Add("NewFileName",this.newFileName);
        }
        return dict;
    }

    public override string GetFilePath(string fileName)
    {
        fileName = base.GetFilePath(this.GetFileName(fileName));
        return fileName;
    }

    private string GetFileName(string fileName)
    {
        if (this.IsNewFileRequest())
        {
            this.ResultChunkTag = string.Format(" [{0:yyyymmdd_hhmmss}]",DateTime.Now);
        }

        else if (this.FormChunkTag != null)
        {
            this.ResultChunkTag = this.FormChunkTag;
        }

        if (this.ResultChunkTag != null)         {             int i = fileName.LastIndexOf('.');             if (i >= 0)             {                 fileName = fileName.Insert(i,this.ResultChunkTag);             }         }         return this.newFileName = fileName;     } }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐