Всплывающее окно, чтобы сохранить изображение в asp.net - PullRequest
2 голосов
/ 26 мая 2010

Я использую asp.net 3.5 и C #.

У меня есть изображение, которое я хочу, чтобы пользователь мог скачать. Мол, была бы кнопка загрузки или ссылка. Когда пользователь нажимает на эту ссылку, ему предлагается всплывающее окно, чтобы сохранить это изображение на своем рабочем столе.

Я пробовал с

<a href ="path" > </a>

но оно открывает изображение на другой странице, я хочу, чтобы пользователю предлагалось либо сохранить, либо просмотреть изображение,

помогите пожалуйста

Заранее спасибо

Ответы [ 2 ]

3 голосов
/ 26 мая 2010

Вам нужно написать IHttpHandler, который обслуживает изображение вместе с заголовком Content-Disposition.

Например:

Response.AppendHeader("Content-Disposition", "attachment; filename=\"MyImage.png\"");
Response.TransmitFile(path);

Возможно, вы передадите имя изображения в строке запроса.
Если это так, убедитесь, что он не содержит / или \, иначе злоумышленники смогут прочитать произвольные файлы.

0 голосов
/ 26 мая 2010

Вам нужна другая страница или, что еще лучше, HttpHandler, который принимает путь к изображению как часть строки запроса или как параметр post, который отправит ответ с Content-Disposition установленным на attachment. При таком расположении содержимого браузер отобразит диалоговое окно загрузки файла. Немного более простой способ, хотя это зависит от того, что пользователь делает что-то дополнительное - просто сделать так, чтобы ссылка открывала изображение на новой странице, и пользователь мог щелкнуть по нему правой кнопкой мыши и выполнить команду «Сохранить как».

<a href="/path/to/handler?image=name-of-image-file">Download</a>

или

<a href="/path/to/image" target="_blank">
    Load Image in New Window then Use Save As</a>
...