首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > CAD教程 >

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

2012-05-09 
silverlight文件夹上传和下载最近在做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);


_fileUploader.UploadFinished += new EventHandler(fileUploader_UploadFinished);
上传部分的代码
[解决办法]
Silverlight无法直接实现上传文件夹。不过你可以尝试另外一个方法实现你的需求。

1. 创建指定文件夹;
2. 遍历源文件夹文件,记录文件信息;
3. 上传所有文件;

http://www.silverlightchina.net/html/tips/2011/0512/7581.html
http://www.silverlightchina.net/html/works/2011/0324/6331.html
http://www.silverlightchina.net/html/tips/2011/0218/5448.html
http://www.silverlightchina.net/html/tips/2011/0127/5194.html
http://www.silverlightchina.net/html/works/2010/0825/1811.html

热点排行