gpt4 book ai didi

c# - 使用 c# asp.net 从 sql 下载 blob 文件并向用户显示保存对话框

转载 作者:行者123 更新时间:2023-11-30 22:14:10 24 4
gpt4 key购买 nike

我已经在网上搜索了几个小时。尽管将 blob 文件上传到 sql 数据库似乎很容易,但尝试再次下载它却是一场噩梦。

我有一个显示记录的 GridView 。 GridView 有一个链接按钮,我想用它来下载一个 blob 文件,该文件保存在与 GridView 从中加载数据的同一个表中。我使用 onclick 事件将记录 ID 传递到我的代码隐藏函数。

这是我的点击事件背后的代码

protected void Downloadbutton_Click(Object sender, CommandEventArgs e)
{

string reqid = e.CommandArgument.ToString();

using (SqlConnection connection = new SqlConnection("ConnectionString"))
{
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "Select Attached_File_Name from ABSENCE_REQUEST where Request_ID = @Request_ID";
cmd.Connection = connection;
cmd.Parameters.AddWithValue("@Request_ID", Convert.ToInt32(20057));

byte[] buffer = (byte[]) cmd.ExecuteScalar();
using (FileStream fs = new FileStream(@"C:\test.pdf", FileMode.Create))
{
fs.Write(buffer, 0, buffer.Length);
}
}
}

我知道在我的代码中我实际上设置了文件的下载位置。但是我该如何更改它以便询问用户将文件保存在哪里?

最佳答案

我认为您可以简单地将数据写入响应(未测试),例如:

private void WriteFile (Byte[] bytes, string fileName)
{
Response.Buffer = true;
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ContentType = dt.Rows[0]["ContentType"].ToString();
Response.AddHeader("content-disposition", "attachment;filename=" + fileName);
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();
}

您可能还想考虑为此创建一个通用处理程序,这样您的代码将非常相似,但是您可以链接到文件,而不是仅在单击按钮时可用,例如您的链接可能是:

YourWebsite/Downloads/RequestFileHandler.ashx?RequestID=5

下载request_ID为5的文件

编辑

抱歉,完全假设这是一个网页,但现在意识到它可能不是,在这种情况下你可以使用类似的东西:

private bool SaveBytesToFile(byte[] butes)
{
var saveFileDialog = new SaveFileDialog();
if (saveFileDialog.ShowDialog() != DialogResult.Cancel)
{
using (var fileStream = new FileStream(saveFileDialog.FileName, FileMode.Create, FileAccess.Write))
{
fileStream.Write(bytes, 0, bytes.Length);
}
return true;
}
return false;
}

关于c# - 使用 c# asp.net 从 sql 下载 blob 文件并向用户显示保存对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18633260/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com