如何从网格视图上传和下载文件?

时间:2015-04-08 13:44:40

标签: c# asp.net gridview

我尝试从网格视图下载文件,但我面临如下错误:

  

无法找到路径的一部分'C:\ Users \ love \ Desktop \ Crime Management System \ Crime Management System \ Admin \ Data \〜\ Admin \ Data \ State and State list of India.pdf'。< / p>

上传Aspx代码:

Property p = new Property();
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            FillData();
        }
    }

    private void FillData()
    {
        GridView1.DataSource = p.GetFile();
        GridView1.DataBind();
    }

    protected void btnUpload_Click(object sender, EventArgs e)
    {
        if (Page.IsValid)
        {
            p.FileName = txtFileName.Text;
            if (FileUpload1.HasFile)
            {
                p.Data = "~/Admin/Data/" + FileUpload1.PostedFile.FileName;
                FileUpload1.SaveAs(Server.MapPath(p.Data));
            }
            else
                p.Data = "Data is not Avilable";
        }
        p.CreateDate = Convert.ToDateTime(dtpdate.Text);
        p.Size = txtSize.Text;
        p.UploadFile(p);
        Response.Write("Upload successfull");

    }

源代码:

    public void UploadFile(Property p)
    {
        cmd = new SqlCommand("UploadFile", con);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@FileName", p.FileName );
        cmd.Parameters.AddWithValue("@Data", p.Data);
        cmd.Parameters.AddWithValue("@CreateDate", p.CreateDate);
        cmd.Parameters.AddWithValue("@Size", p.Size);

        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();

    }
    public void DeleteFile(Property p)
    {
        cmd = new SqlCommand("DeleteFile", con);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@DataId", p.DataId);
        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();
    }
    public DataTable GetFile()
    {
        cmd = new SqlCommand("Select * from tblData", con);
        da = new SqlDataAdapter(cmd);
        dt = new DataTable();
        da.Fill(dt);
        return dt;
    }

Aspx下载代码:

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("~/Admin/Data/") + e.CommandArgument);
            Response.End();
        }


    }

上传和删除文件所有内容都正常工作,但下载过程中遇到了问题。

1 个答案:

答案 0 :(得分:0)

错误消息告诉您问题所在:

  

找不到路径的一部分&#39; C:\ Users \ love \ Desktop \ Crime   管理系统\犯罪管理   India.pdf&#39;

的System \ Admin \ Data \〜\ Admin \ Data \ State和Capital列表

管理员\数据\〜\管理员\数据 - &gt;您可以看到 Server.MapPath()已映射到 \ Admin \ Data ,然后您尝试再次映射它,这将导致无法找到的路径。 (您可以尝试输入资源管理器中给出的路径 - 不会工作)

如果只将文件名添加到 Server.MapPath(),您应该获得正确的下载路径:

Response.TransmitFile(Server.MapPath(e.CommandArgument.ToString()));