У меня есть ListView с библиотекой изображений в качестве источника, и для каждого изображения у меня есть asp: LinkButton, который представляет кнопку загрузки. При нажатии моя кнопка должна открыть окно загрузки браузера. Для этого я использую следующий код:
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 true, потому что Я всегда получаю FileNotFoundException или System.Web.HttpException (при использовании виртуального пути).
Кто-нибудь знает, как лучше решить эту проблему?