silverlight文件夹上传和下载,该如何处理

silverlight文件夹上传和下载
最近在做silverlight项目,其中涉及到文件夹的上传和下载,挣扎的很长一段时间,求解答

------解决方案--------------------
silverlight 上传文件 http://www.51aspx.com/CV/SilverlightFileUpload/
 /// <summary>
/// 打开文件对话框的选择
/// </summary>
private void SelectUserFiles()
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Multiselect = true;

try
{
//检查文件过滤器(过滤器用来过滤文件扩展名,例如只能选择jpg文件)。
if (!string.IsNullOrEmpty(_fileFilter))
ofd.Filter = _fileFilter;
}
catch (ArgumentException ex)
{
//用户提供了一个错误的配置文件
throw new Exception("Wrong file filter configuration.", ex);
}

if (ofd.ShowDialog() == true)
{
foreach (FileInfo file in ofd.Files)
{
string fileName = file.Name;

//创建一个新的UserFile对象
UserFile userFile = new UserFile();
userFile.FileName = file.Name;
userFile.FileStream = file.OpenRead();
userFile.UIDispatcher = this.Dispatcher;
userFile.HttpUploader = _HttpUploader;
userFile.UploadHandlerName = _uploadHandlerName;

//检查文件大小限制(配置)
if (userFile.FileStream.Length <= _maxFileSize)
{
//加到列表中
_files.Add(userFile);
}
else
{
MessageChildWindow messageWindow = new MessageChildWindow();
messageWindow.Message = "上传的文件上限为: " + (_maxFileSize / 1024).ToString() + "KB.";
messageWindow.Show();
if (MaximumFileSizeReached != null)
MaximumFileSizeReached(this, null);

}
}
}
}

/// <summary>
///开始上传文件
/// </summary>
private void UploadFiles()
{
if (_files.Count == 0)
{
MessageChildWindow messageWindow = new MessageChildWindow();
messageWindow.Message = "没有文件可以上传, 请选择一个或多个文件!";
messageWindow.Show();
}
else
{
//开始上传
_files.UploadFiles();
}
}

/// <summary>
/// _files.UploadFiles()方法开始上传
/// </summary>
public void UploadFiles()
{
lock (this)
{
foreach (UserFile file in this)
{
if (!file.IsDeleted && file.State == Constants.FileStates.准备 && _currentUpload < _maxUpload)
{
file.Upload(_customParams);
_currentUpload++;
}
}
}
}

/// <summary>
/// UserFile的Upload方法
/// </summary>
/// <param name="initParams"></param>
public void Upload(string initParams)
{
this.State = Constants.FileStates.上传中;
if (HttpUploader)
_fileUploader = new HttpFileUploader(this, UploadHandlerName);
else
_fileUploader = new WcfFileUploader(this);
_fileUploader.StartUpload(initParams);