我需要将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
但运行此代码文件/图像后没有下载,我没有得到关于为什么文件没有下载的错误。我使用breakpoint
检查了文件路径,这是正确的,
我搜索了很多形式谷歌,但我无法理解我错过了什么。
修改 在页面加载事件我从表中拉记录我保存文件的路径,在会话中我存储它像
Session["slc_filepath"] = dt.Rows[0]["UploadSLC"].ToString();
其中UploadSLC
是我存储图像路径的表的列名
并且在数据库字符串中看起来像
~\uploads\ab071770-473a-4e1a-8cfc-addeccf565d5.jpg
答案 0 :(得分:0)
试试这个:
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();
}
很高兴为您服务!
答案 1 :(得分:0)
我建议解决它来自的问题。
尝试使用硬编码路径(确保传递正确的路径)
//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错误。
答案 2 :(得分:0)
请在从数据库绑定时更正您的图像路径
喜欢"〜/ Image / images.png"。
我的代码片段的PFB你可能会得到解决方案。
protected void Page_Load(object sender,EventArgs e) { 会话[" slc_filepath"] ="〜/ Image / images.png&#34 ;; }
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();
}
答案 3 :(得分:0)
然后通过ajax发送一个窗口。打开新的ashx。
答案 4 :(得分:0)
我经过长时间的搜索后找到了答案,但我得到的提示是我团队中的大三学生我真的很感激,我刚刚补充
ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page);
scriptManager.RegisterPostBackControl(this.lnkDwnSlc);
在pageLoad
事件中,因为我在我的aspx页面中使用更新面板和脚本管理器,并在设计中使用bootstrap,因此它停止了功能
这样做之后就像魅力一样,
感谢您的所有努力和支持,