首页 > 解决方案 > 从 ASP.NET 中的 gridview 下载文件时如何保存文件路径

问题描述

我有一个显示图像名称、图像和图像链接以从 SQL 服务器数据库下载的 gridview (webservice)。在单独的数据库表中下载图像(单击链接按钮后)后,我想将图像路径保存在数据库中。

此图像下载网络表单连接到我的另一个具有 ImgPath (nvarchar255) 字段的网络表单图像上传。

概述:到目前为止我所拥有的:

  1. 图像和图像链接的网格视图
  2. 从数据库中检索Gridview
  3. 可以下载图片

我需要的:

  1. 下载图像时--> 将图像路径保存到 SQL Server 数据库

aspx:

 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnRowCommand="GridView1_RowCommand">
    <Columns>

        <asp:BoundField HeaderText="ID" DataField="AdvID" />
        <asp:BoundField HeaderText="Name" DataField="Name" />
        <asp:BoundField HeaderText="Item" DataField="Item" />
        <asp:ImageField HeaderText="Image" DataImageUrlField="ImgPath" ControlStyle-Height="120" ControlStyle-Width="140">
            <ControlStyle Height="120px" Width="140px"></ControlStyle>
        </asp:ImageField>
        <asp:TemplateField HeaderText="View Information">
            <ItemTemplate>
                <asp:LinkButton ID="lnkView" runat="server" CommandArgument='<%#Eval("AdvID") %>' OnClick="lnk_OnClick">View</asp:LinkButton>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="DownloadLink">
            <ItemTemplate>
                <asp:LinkButton ID="LinkButton1" runat="server" CommandArgument='<%# Eval("Item") %>' Text='<%# Eval("Item") %>' CommandName="Download"></asp:LinkButton>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

aspx.cs:

public partial class AdvGridView : System.Web.UI.Page
{

SqlConnection sqlCon = new SqlConnection(ConfigurationManager.ConnectionStrings["connect"].ToString());

protected void Page_Load(object sender, EventArgs e)
{
    if (!this.IsPostBack)
    {
        this.BindGrid();
    }
}

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "Download")
    {

        Response.Clear();
        Response.ContentType = "application/octect-stream";
        Response.AppendHeader("content-disposition", "filename=" + e.CommandArgument);
        Response.TransmitFile(Server.MapPath("~/Images/") + e.CommandArgument);
        Response.End();


    }
}
void FillGridView()
{
    if (sqlCon.State == ConnectionState.Closed)
        sqlCon.Open();
    SqlDataAdapter sqlDa = new SqlDataAdapter("ViewAll", sqlCon);
    sqlDa.SelectCommand.CommandType = CommandType.StoredProcedure;
    DataTable dtbl = new DataTable();
    sqlDa.Fill(dtbl);
    sqlCon.Close();
    GridView1.DataSource = dtbl;
    GridView1.DataBind();
}

protected void lnk_OnClick(object sender, EventArgs e)
{
    int AdvertisementID = Convert.ToInt32((sender as LinkButton).CommandArgument);
    if (sqlCon.State == ConnectionState.Closed)
        sqlCon.Open();
    SqlDataAdapter sqlDa = new SqlDataAdapter("ViewByID", sqlCon);
    sqlDa.SelectCommand.CommandType = CommandType.StoredProcedure;
    sqlDa.SelectCommand.Parameters.AddWithValue("@AdvID", AdvertisementID);
    DataTable dtbl = new DataTable();
    sqlDa.Fill(dtbl);

    sqlCon.Close();

}

private void BindGrid()
{
    GridViewService.WebService service = new GridViewService.WebService();
    GridView1.DataSource = service.Get();
    GridView1.DataBind();
}
}

标签: c#asp.netsql-serverdownload

解决方案


推荐阅读