如何安排定期下载

时间:2018-12-13 15:56:10

标签: asp.net download scheduled-tasks offline recurring

我是与政府机构合作的网络开发人员。最近,我接到要求为EMS和公众使用的文档建立一个完全可搜索的索引文件存储库。这些是处理心力衰竭,用药过量和其他紧急情况的协议,在那里没有问题。

我的问题是想出一种解决方案,以离线提供那些文档的最新版本。尽管其中一些协议已经确立,但其他协议(例如,Narcan)正在不断发展和变化,并且EMS工作人员经常处在无法随时访问Internet的情况下,因此我需要一种方法来使这些文件在本地可用离线,每天下载到他们的设备。我相信他们主要使用Android手机,但是我敢肯定那里也有苹果设备。

理想情况下,我想使用脚本来完成此操作,但是我也希望第三方也可以安排重复下载。

文档存储为斑点。我现在要显示文档的页面当前使用.ashx处理程序将响应嵌入到文字(我正在使用ASP.NET)中。如果我直接提供.ashx作为下载网址,是否可以使用?

 Public Sub ProcessRequest(context As HttpContext) Implements IHttpHandler.ProcessRequest
    Dim id As Integer = context.Request("Id")

    Dim bytes As Byte()
    Dim fileName As String
    Dim constr As String = ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString

    context.Response.Buffer = True
    context.Response.Charset = ""

    Using con As New SqlConnection(constr)
        Using cmd As New SqlCommand()
            cmd.CommandText = "SELECT DocumentFile, Name FROM Documents WHERE DocumentID=@Id"
            cmd.Parameters.AddWithValue("@Id", id)
            cmd.Connection = con
            con.Open()
            Using sdr As SqlDataReader = cmd.ExecuteReader()
                sdr.Read()
                bytes = DirectCast(sdr("DocumentFile"), Byte())
                fileName = sdr("Name").ToString() + ".pdf"
            End Using
            con.Close()
        End Using
    End Using

    If context.Request.QueryString("download") = "1" Then
        context.Response.AppendHeader("Content-Disposition", Convert.ToString("attachment; filename=") & fileName)
    End If

    context.Response.Cache.SetCacheability(HttpCacheability.NoCache)
    context.Response.ContentType = "application/pdf"

    context.Response.BinaryWrite(bytes)
    context.Response.Flush()
    context.Response.[End]()
End Sub

0 个答案:

没有答案