无法从 asp.net 中的上传文件夹下载 files/images
Cannot download files/images from uploads folder in asp.net
我需要下载存储在 asp.net
网络应用程序名称为 uploads
的文件夹中的图像
我得到了一个应该下载这个的函数
private void downloadAnImage(string strImage)
{
Response.ContentType = "image/jpg";
Response.AppendHeader("Content-Disposition", "attachment; filename=" + strImage);
Response.TransmitFile(strImage);
Response.End();
}
我从 link button
调用此函数为
protected void lnkDwnSlc_Click(object sender, EventArgs e)
{
if (Session["slc_filepath"] != null)
{
string path = Server.MapPath(Session["slc_filepath"].ToString());
downloadAnImage(path);
}
}
其中 Session["slc_filepath"]
是存储在 session
中的路径
但是在 运行 之后,这段代码 file/image 没有下载,我没有收到关于为什么文件没有下载的错误。我使用 breakpoint
检查了文件路径,它是正确的,
我搜索了很多表格 google 但我不明白我遗漏了什么。
编辑:
在页面加载事件中,我从 table 中提取记录,在那里我保存了文件路径,并在会话中将其存储为
Session["slc_filepath"] = dt.Rows[0]["UploadSLC"].ToString();
其中 UploadSLC
是 table 的列名称,我在其中存储图像路径
在数据库中,字符串看起来是
~\uploads\ab071770-473a-4e1a-8cfc-addeccf565d5.jpg
试试这个:
private void downloadAnImage(string strImage)
{
Response.Clear();
Response.ContentType = "image/jpg";
Response.AppendHeader("Content-Disposition", "attachment; filename=" + strImage);
Response.TransmitFile(strImage);
Response.Flush();
Response.End();
}
很高兴为您提供帮助!
我建议解决它的来源问题。
尝试硬编码路径(以确保您传递的路径正确)
//try forward or back slash, make sure the file exists
string path = Server.MapPath("~/uploads/ab071770-473a-4e1a-8cfc-addeccf565d5.jpg");
试试这个:
private void downloadAnImage(string strImage)
{
Response.ContentType = "image/jpg";
Response.AppendHeader("Content-Disposition", "attachment; filename=" + strImage);
Response.TransmitFile(strImage);
Response.Flush();
Response.End();
}
确保客户端没有抛出 javascript 错误。
从数据库绑定时请更正图片路径
喜欢“~/Image/images.png”。
我的代码片段的 PFB 您可能应该得到解决方案。
protected void Page_Load(object sender, EventArgs e)
{
会话["slc_filepath"] = "~/Image/images.png";
}
protected void LinkButton1_Click(object sender, EventArgs e)
{
string path = Server.MapPath(Session["slc_filepath"].ToString());
downloadAnImage(path);
}
private void downloadAnImage(string strImage)
{
Response.ContentType = "image/jpg";
Response.AppendHeader("Content-Disposition", "attachment; filename=" + strImage);
Response.TransmitFile(strImage);
Response.End();
}
像这样使用 ashx 处理程序http://www.intstrings.com/ramivemula/asp-net/how-to-download-files-from-server-to-client-using-a-generic-handler/
然后通过ajax发送一个window.Open到新的ashx。
经过长时间的搜索,我找到了答案,但我得到的提示来自我团队中的后辈,我非常感谢,我刚刚添加了
ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page);
scriptManager.RegisterPostBackControl(this.lnkDwnSlc);
在 pageLoad
事件中因为我在我的 aspx 页面中使用了更新面板和脚本管理器并且 bootstrap 用于设计所以它停止了功能
这样做之后,它就像一个魅力,
感谢大家的努力和支持,
我需要下载存储在 asp.net
网络应用程序名称为 uploads
我得到了一个应该下载这个的函数
private void downloadAnImage(string strImage)
{
Response.ContentType = "image/jpg";
Response.AppendHeader("Content-Disposition", "attachment; filename=" + strImage);
Response.TransmitFile(strImage);
Response.End();
}
我从 link button
调用此函数为
protected void lnkDwnSlc_Click(object sender, EventArgs e)
{
if (Session["slc_filepath"] != null)
{
string path = Server.MapPath(Session["slc_filepath"].ToString());
downloadAnImage(path);
}
}
其中 Session["slc_filepath"]
是存储在 session
中的路径
但是在 运行 之后,这段代码 file/image 没有下载,我没有收到关于为什么文件没有下载的错误。我使用 breakpoint
检查了文件路径,它是正确的,
我搜索了很多表格 google 但我不明白我遗漏了什么。
编辑: 在页面加载事件中,我从 table 中提取记录,在那里我保存了文件路径,并在会话中将其存储为
Session["slc_filepath"] = dt.Rows[0]["UploadSLC"].ToString();
其中 UploadSLC
是 table 的列名称,我在其中存储图像路径
在数据库中,字符串看起来是
~\uploads\ab071770-473a-4e1a-8cfc-addeccf565d5.jpg
试试这个:
private void downloadAnImage(string strImage)
{
Response.Clear();
Response.ContentType = "image/jpg";
Response.AppendHeader("Content-Disposition", "attachment; filename=" + strImage);
Response.TransmitFile(strImage);
Response.Flush();
Response.End();
}
很高兴为您提供帮助!
我建议解决它的来源问题。
尝试硬编码路径(以确保您传递的路径正确)
//try forward or back slash, make sure the file exists string path = Server.MapPath("~/uploads/ab071770-473a-4e1a-8cfc-addeccf565d5.jpg");
试试这个:
private void downloadAnImage(string strImage) { Response.ContentType = "image/jpg"; Response.AppendHeader("Content-Disposition", "attachment; filename=" + strImage); Response.TransmitFile(strImage); Response.Flush(); Response.End(); }
确保客户端没有抛出 javascript 错误。
从数据库绑定时请更正图片路径
喜欢“~/Image/images.png”。
我的代码片段的 PFB 您可能应该得到解决方案。
protected void Page_Load(object sender, EventArgs e) { 会话["slc_filepath"] = "~/Image/images.png"; }
protected void LinkButton1_Click(object sender, EventArgs e)
{
string path = Server.MapPath(Session["slc_filepath"].ToString());
downloadAnImage(path);
}
private void downloadAnImage(string strImage)
{
Response.ContentType = "image/jpg";
Response.AppendHeader("Content-Disposition", "attachment; filename=" + strImage);
Response.TransmitFile(strImage);
Response.End();
}
像这样使用 ashx 处理程序http://www.intstrings.com/ramivemula/asp-net/how-to-download-files-from-server-to-client-using-a-generic-handler/
然后通过ajax发送一个window.Open到新的ashx。
经过长时间的搜索,我找到了答案,但我得到的提示来自我团队中的后辈,我非常感谢,我刚刚添加了
ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page);
scriptManager.RegisterPostBackControl(this.lnkDwnSlc);
在 pageLoad
事件中因为我在我的 aspx 页面中使用了更新面板和脚本管理器并且 bootstrap 用于设计所以它停止了功能
这样做之后,它就像一个魅力,
感谢大家的努力和支持,