Кнопка загрузки для загрузки из библиотеки изображений - PullRequest
0 голосов
/ 08 ноября 2011

У меня есть 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 (при использовании виртуального пути).

Кто-нибудь знает, как лучше решить эту проблему?

1 Ответ

0 голосов
/ 09 ноября 2011

Я думаю, вы должны использовать 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...