在SQL数据库中有一个表,TestFile:字段名如下
ID:标识字段
MyFileName:文件名
FileType:文件类型
MyFile:image类型字段,用来保存文件。
当我用如下地址调用ShowFile程序时,会提示保存还是打开文件,但缺省的文件名是showfile
http://127.0.0.1/ShowFile.aspx?ID=5
怎样才能将文件名自动设为MyFileName中保存的文件名呢?--------------------------------------------------------
'ShowFile.aspx 程序代码如下,请高手指点
Imports System.IO
Imports System.Data
Imports System.Data.SqlClientPublic Class ShowFile
    Inherits System.Web.UI.Page
   Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        '在此处放置初始化页的用户代码
        Dim sql As String = "SELECT * FROM TestFiles WHERE ID = '" + Request.QueryString("ID") + "'"
        Dim connection As SqlConnection = New SqlConnection("Server=127.0.0.1;uid=sa;pwd=sqladmin;Database=test")
        Dim command As SqlCommand = New SqlCommand(sql, connection)
        connection.Open()
        Dim dr As SqlDataReader = command.ExecuteReader()
        If dr.Read() Then
            Response.Clear()
            Response.AddHeader("Content-Type", dr("FileType").ToString())
            Response.BinaryWrite(dr("MyFile"))        End If        dr.Close()
        connection.Close()    End SubEnd Class

解决方案 »

  1.   

    你存到数据库的时候要给个字段存文件名,然后取出来的时候
    Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode( 数据库里的文件名));
      

  2.   

    xiedan79(Sam Xie) 的方法正确.
    但用以下的语句,可防止文件名变为乱码
    Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(文件名)) 
      

  3.   

    我试了一下,在IE中,用右键另存为,对中文名是不会变乱码的。
    但是用FlashGet下载时,就会变成乱码了。用 hchxxzx(NET?摸到一点门槛) 的方法也不行!还望大家再指点一二。