Silverlight文件上传下载实现方法(下载保存)
需积分: 0 156 浏览量
更新于2020-09-03
收藏 71KB PDF 举报
在本文中,我们将深入探讨如何在Silverlight应用中实现文件的上传和下载功能,特别是针对下载保存的操作。Silverlight是一种由Microsoft开发的富互联网应用程序(RIA)平台,它允许开发者创建具有丰富图形和互动性的Web应用程序。
我们来看文件上传的实现。在Silverlight中,通常使用`System.Net.WebClient`类来处理文件上传。`WebClient`类提供了方便的方法如`UploadFile()`或`UploadData()`来发送POST请求到服务器。在上传文件之前,你需要确保用户选择了一个文件,这可以通过添加一个文件选择控件来实现。一旦用户选择了文件,你可以通过`WebClient`实例的`UploadFileAsync()`方法异步上传文件。例如:
```csharp
private void btnUpLoad_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
if (openFileDialog.ShowDialog() == true)
{
fileinfo = new FileInfo(openFileDialog.FileName);
var client = new WebClient();
client.UploadFileAsync(new Uri("http://yourserver/upload"), "POST", openFileDialog.FileName);
// 添加事件处理程序来跟踪上传进度和完成情况
client.UploadProgressChanged += Upload_ProgressChanged;
client.UploadFileCompleted += Upload_FileCompleted;
}
}
```
在这个例子中,`Upload_ProgressChanged`和`Upload_FileCompleted`是两个事件处理程序,分别用于处理上传进度的更新和上传操作的完成。
接下来,我们讨论文件下载的实现。在Silverlight中,`WebClient`同样适用于下载任务。你可以使用`OpenReadAsync()`或`DownloadFileAsync()`方法来异步下载文件。以下是一个简单的下载保存示例:
```csharp
private void btnDownload_Click(object sender, RoutedEventArgs e)
{
string url = "http://localhost:4528/download.ashx?fileName=aa.txt";
var client = new WebClient();
client.OpenReadCompleted += (s, args) =>
{
using (var stream = args.Result)
using (var fileStream = File.Create(fileinfo.FullName))
{
stream.CopyTo(fileStream);
}
};
client.OpenReadAsync(new Uri(url));
}
```
这段代码会触发一个异步的HTTP GET请求,然后在`OpenReadCompleted`事件处理程序中,将接收到的数据保存到本地文件系统。
注意,`WebClient`的一些关键属性和行为:
1. `IsBusy`属性表示当前是否正在进行网络操作。在请求完成之前,不能发起新的请求,否则会导致`NotSupportedException`。
2. `BaseAddress`属性用于设置基础URL,当提供相对URI时,它会被用来构建完整的URL。
3. `AllowReadStreamBuffering`属性默认为`true`,意味着数据会被缓存到客户端内存中。如果你担心内存使用,可以将其设为`false`以避免缓冲。
在UI设计方面,本文提到的`UC_UpDown.xaml`文件包含了按钮和图像控件,用于触发下载和显示下载进度。`HyperlinkButton`用于直接下载文件,而`Button`控件则用于启动自定义的下载保存流程。
为了提供更好的用户体验,通常还需要处理错误和进度更新,例如使用`DownloadProgressChanged`事件来更新进度条或文本,以及处理可能的异常。
总结来说,通过`WebClient`类和适当的事件处理程序,Silverlight应用能够轻松实现文件的上传和下载功能。不过,要记住Silverlight已经被弃用,现在推荐使用HTML5的`XMLHttpRequest`或`fetch` API等现代技术来处理文件操作。
weixin_38718223
- 粉丝: 11
- 资源: 930
最新资源
- 01-【培训计划】19-新员工培训第一周课程表.docx
- 01-【培训计划】16-海底捞新员工三日入职培训.docx
- 01-【培训计划】20-新员工培训课程表.doc.docx
- 02-【培训方案】02-员工培训课程设计方案.doc.docx
- 02-【培训方案】08-新员工入职培训体系.docx
- 02-【培训方案】10-新员工培训方案.docx
- 02-【培训方案】12-新员工团队专线拓展培训方案.docx
- 03-【培训流程】01-新员工入职培训流程.docx
- 03-【培训流程】05-新员工入职培训流程图.docx
- 03-【培训流程】07-员工培训管理流程.docx
- 03-【培训流程】06-新员工培训流程图及工作标准.doc.docx
- 03-【培训流程】08-培训管理流程.docx
- 04-【培训通知】01-新员工培训通知.docx
- 04-【培训通知】02-关于开展新员工培训通知.docx
- 04-【培训通知】05-新员工入职培训通知(模板).docx
- 06-【培训手册】03-新员工培训手册范本.docx