下载按钮从图片库下载

时间:2011-11-08 16:18:31

标签: asp.net sharepoint sharepoint-2010

我有一个带有图片库的ListView作为源,每张图片我有一个asp:LinkBut​​ton代表一个下载按钮。按下我的按钮应该打开浏览器下载框。我正在使用以下代码来实现这一目标:

public void Download_Click(object source, EventArgs e)
        {
LinkButton button = (LinkButton)source;
string url = Server.UrlEncode(button.CommandArgument);
FileInfo fileInfo = new FileInfo(url);

if (fileInfo.Exists)
            {      
                Response.Clear();
                Response.AddHeader("Content-Disposition", "attachment; filename=" + fileInfo.Name);
                Response.AddHeader("Content-Length", fileInfo.Length.ToString());
                Response.ContentType = "application/octet-stream";
                Response.Flush();
                Response.WriteFile(fileInfo.FullName);
            }
            else
            {
                //error
            }
}

在那段代码上,我正在使用Server.Encode(“fileName”),但我尝试了Server.Map并使用了“PicLibraryName / FileName”和“Application / PictureLibraryName / FileName”,但我从来没有得到FileInfo.Exists为真,因为我总是得到FileNotFoundException或System.Web.HttpException(当我使用虚拟路径时)。

任何人都知道解决这个问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

我认为您应该使用WebClient.DownloadData(url)下载文件,然后使用Response.OutputStream.Write方法输出下载数据,也不要忘记使用Response.End()这样的结束响应:

var wc=new System.Net.WebClient();
var data=wc.DownloadData(url);
Response.Clear();
//add headers..
Response.OutputStream.Write(data);
Response.End();