PDF下载不起作用,而是在浏览器中打开不可读

时间:2015-03-05 19:48:08

标签: asp.net vb.net

我有一个asp.net应用程序,允许用户下载PDF文件。但是,浏览器不是下载它,而是打开具有不可读块字符的文件。

下载代码

Protected Sub btn_dwnd_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn_dwnd.Click
    cn.Open()

    cmd.CommandText = "Select * from Syllabus where file_name ='" & txtdwd_file.Text & "'"
    cmd.Connection = cn
    dr = cmd.ExecuteReader
    Do While dr.Read
        Response.WriteFile(dr("file_name"))

    Loop
    cn.Close()
End Sub

我正在尝试将我上传的pdf文件下载到项目的根目录D:\OLMS中,当我点击下载时,在浏览器(方形字符)中打开不可用的字符。我认为它在浏览器中打开了pfd文件

上传代码

Protected Sub btnadd_sylbus_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnadd_sylbus.Click
    Dim extension As String = System.IO.Path.GetExtension(FileUpload_sylbus.PostedFile.FileName).ToLower()
    Dim Type As String = Nothing
    If (extension = ".pdf") Then
        Dim strFileNamePath As String
        Dim strFileNameOnly As String
        strFileNamePath = FileUpload_sylbus.PostedFile.FileName
        strFileNameOnly = Path.GetFileName(strFileNamePath)
        Dim newFileNamePath As String = Path.Combine("D:\OLMS", strFileNameOnly)
        Dim br As New BinaryReader(FileUpload_sylbus.PostedFile.InputStream)
        FileUpload_sylbus.PostedFile.SaveAs(newFileNamePath)
        cmd.CommandText = "INSERT into Syllabus(sylbus_id, sylbus_name, file_name, content) values(@id,@name,@file,@cont)"
        cmd.Connection = cn
        cmd.Parameters.Add("@id", txtsylbus_id.Text)
        cmd.Parameters.Add("@name", txtsylbus_name.Text)
        cmd.Parameters.Add("@file", FileUpload_sylbus.FileName)
        cmd.Parameters.Add("@cont", br.ReadBytes(FileUpload_sylbus.PostedFile.ContentLength))
        cmd.ExecuteNonQuery()
        cn.Close()
        lbladd_sylbus.Visible = True
        lbladd_sylbus.Text = "File Upload Success."
        txtsylbus_id.Text = Nothing
        txtsylbus_name.Text = Nothing
    Else
        lbladd_sylbus.Visible = True
        lbladd_sylbus.Text = "Not a Valid file format"
    End If
End Sub

1 个答案:

答案 0 :(得分:0)

Thanx的人工作:D

        Response.ClearHeaders()
        Response.ClearContent()
        Response.ContentType = "application/octet-stream"
        Response.Charset = "UTF-8"
        Response.AddHeader("content-disposition", "attachment; filename=" & dr("file_name"))
        Response.WriteFile("D:\OLMS\" & dr("file_name"))
        Response.End()