欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

SilverLight下载任意文件技巧

程序员文章站 2022-05-22 14:12:51
...

xaml采用LinkButton 其NavigateUri属性链接到服务端下载的ashx文档 如 HyperlinkButton Margin="32,135,198,140" Content="HyperlinkButton" NavigateUri="http://localhost:1399/download.ashx" / download.ashx 如下 Code 1 Imports System.Web 2 Imports

xaml采用LinkButton 其NavigateUri属性链接到服务端下载的ashx文档

download.ashx如下

SilverLight下载任意文件技巧SilverLight下载任意文件技巧Code
1SilverLight下载任意文件技巧Imports System.Web
2SilverLight下载任意文件技巧Imports System.Web.Services
3SilverLight下载任意文件技巧Imports System.Net
4SilverLight下载任意文件技巧SilverLight下载任意文件技巧Public Class downloadClass download
5SilverLight下载任意文件技巧Implements System.Web.IHttpHandler
6SilverLight下载任意文件技巧
7SilverLight下载任意文件技巧Private ChunkSize As Long = 102400 '100K 每次读取文件,只读取100K,这样可以缓解服务器的压力
8SilverLight下载任意文件技巧
9SilverLight下载任意文件技巧SilverLight下载任意文件技巧Sub ProcessRequest()Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
10SilverLight下载任意文件技巧Dim fileName As String = "aaa.JPG" '客户端保存的文件名
11SilverLight下载任意文件技巧 Dim filePath As String = context.Server.MapPath("image/IMG_1370.JPG") '路径
12SilverLight下载任意文件技巧
13SilverLight下载任意文件技巧Dim fileInfo As System.IO.FileInfo = New System.IO.FileInfo(filePath)
14SilverLight下载任意文件技巧
15SilverLight下载任意文件技巧If fileInfo.Exists = True Then
16SilverLight下载任意文件技巧
17SilverLight下载任意文件技巧Dim buffer(ChunkSize) As Byte
18SilverLight下载任意文件技巧
19SilverLight下载任意文件技巧 context.Response.Clear()
20SilverLight下载任意文件技巧Dim iStream As System.IO.FileStream = System.IO.File.OpenRead(filePath)
21SilverLight下载任意文件技巧Dim dataLengthToRead As Long = iStream.Length '获取下载的文件总大小
22SilverLight下载任意文件技巧
23SilverLight下载任意文件技巧 context.Response.ContentType = "application/octet-stream"
24SilverLight下载任意文件技巧'通知浏览器下载文件而不是打开
25SilverLight下载任意文件技巧 context.Response.AddHeader("Content-Disposition", "attachment; filename=" & _
26SilverLight下载任意文件技巧 HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8))
27SilverLight下载任意文件技巧Loop1:
28SilverLight下载任意文件技巧While dataLengthToRead > 0 And context.Response.IsClientConnected
29SilverLight下载任意文件技巧Dim lengthRead As Integer = iStream.Read(buffer, 0, Convert.ToInt32(ChunkSize)) '读取的大小
30SilverLight下载任意文件技巧 context.Response.OutputStream.Write(buffer, 0, lengthRead)
31SilverLight下载任意文件技巧 context.Response.Flush()
32SilverLight下载任意文件技巧 dataLengthToRead = dataLengthToRead - lengthRead
33SilverLight下载任意文件技巧End While
34SilverLight下载任意文件技巧
35SilverLight下载任意文件技巧 context.Response.Close()
36SilverLight下载任意文件技巧 context.Response.End()
37SilverLight下载任意文件技巧End If
38SilverLight下载任意文件技巧
39SilverLight下载任意文件技巧'context.Response.ContentType = "text/plain"
40SilverLight下载任意文件技巧 'context.Response.Write("Hello World!")
41SilverLight下载任意文件技巧
42SilverLight下载任意文件技巧End Sub

43SilverLight下载任意文件技巧
44SilverLight下载任意文件技巧SilverLight下载任意文件技巧ReadOnly Property IsReusable()Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
45SilverLight下载任意文件技巧Get
46SilverLight下载任意文件技巧Return False
47SilverLight下载任意文件技巧End Get
48SilverLight下载任意文件技巧End Property

49SilverLight下载任意文件技巧
50SilverLight下载任意文件技巧End Class