专门做一个aspx文件来显示文件, 传入参数: infoid设定datagrid里一个HyperLinkColumn来显示链接点击后, 用新窗口打开showfile.aspx?infoid=xxxshowfile.aspx就是读取infopath所在文件, 并将它显示出来

解决方案 »

  1.   

    呵呵,思路挺好的。可以给出showfile.aspx读取infopath所在文件的代码吗?我不会。
    还有,数据库重是存文件的物理路径吗?
      

  2.   

    我这里有直接从数据库中读取图片的例子, 你再改一下
    就是取出infopath, 再得到相应文件,
    FileStream fs = new FileStream(infopath, FileMode.Open);
    转成字节数组, 写到客户端即可<%@Page language="C#"%>
    <%@import namespace="System.Data"%>
    <%@import namespace="System.Data.SqlClient"%>
    <script language="C#" runat="server">
    public void Page_Load(Object o, EventArgs e)
    {
    int ImgID = Convert.ToInt32(Request.Params["infoid"]);
    string connStr = ConfigurationSettings.AppSettings["ConnectionString"];
    SqlConnection conn = new SqlConnection(connStr);
    string sql = "select * from t_imgs where id = @ImgID";
    SqlCommand cmd = new SqlCommand(sql, conn);
    cmd.Parameters.Add("@ImgID", SqlDbType.Int).Value = ImgID;
    conn.Open();
    SqlDataReader read = cmd.ExecuteReader();
    read.Read();
    Response.ContentType = (string)read["type"];
    Response.OutputStream.Write((byte[])read["imgData"], 0, (int)read["imgSize"]);
    Response.End();
    conn.Close();
    }
    </script>
      

  3.   

    我这里有直接从数据库中读取图片的例子, 你再改一下
    就是取出infopath, 再得到相应文件,
    FileStream fs = new FileStream(infopath, FileMode.Open);
    转成字节数组, 写到客户端即可<%@Page language="C#"%>
    <%@import namespace="System.Data"%>
    <%@import namespace="System.Data.SqlClient"%>
    <script language="C#" runat="server">
    public void Page_Load(Object o, EventArgs e)
    {
    int ImgID = Convert.ToInt32(Request.Params["infoid"]);
    string connStr = ConfigurationSettings.AppSettings["ConnectionString"];
    SqlConnection conn = new SqlConnection(connStr);
    string sql = "select * from t_imgs where id = @ImgID";
    SqlCommand cmd = new SqlCommand(sql, conn);
    cmd.Parameters.Add("@ImgID", SqlDbType.Int).Value = ImgID;
    conn.Open();
    SqlDataReader read = cmd.ExecuteReader();
    read.Read();
    Response.ContentType = (string)read["type"];
    Response.OutputStream.Write((byte[])read["imgData"], 0, (int)read["imgSize"]);
    Response.End();
    conn.Close();
    }
    </script>
      

  4.   

    啊呃,要改好多啊。我用的是vb.net的语言,filestream,没有这个东西。
      

  5.   

    http://www.aspalliance.com/aldotnet/examples/translate.aspx
    到这个地址, 把c#转成vb.netfilestream在命名空间 System.IO里面
      

  6.   

    read["type"],read["imgData"]  (int)read["imgSize"] 请问,type,imgdata,imgsize是什么
      

  7.   

    我知道,我是说他们是Response.ContentType 和Response.OutputStream.Write(,,)需要的什么参数?
      

  8.   

    文件的ContentType在上传文件时会取得, upFile.PostedFile.ContentType文件的 Response.ContentType = "text/txt"
    html   Response.ContentType = "text/html"
    其它可以写  Response.ContentType = "application/octet-stream"Write里的参数为byte[]
      

  9.   

    "imagedata" 在上川文件时怎么写进去的
      

  10.   

    你又不是把内容存数据库里, 用不着imagedata
      

  11.   

    http://www.aspalliance.com/aldotnet/examples/translate.aspxthis.z.Click += new System.EventHandler(this.z_click);
    public void z_click(object sender, System.EventArgs e)
    {
    }Me.z.Click += New System.EventHandler(Me.z_click)
    Public Sub z_click(sender As Object, e As System.EventArgs)
    End Sub 'z_click有意思
      

  12.   

    在datagrid中点击超级连结标题时,你是怎么把改行的关键字传到showfile.aspx叶面的
    我不知道取参数的事件应该写在datagrid的那个事件里?