ASP.NET Обратное изображение из ссылки .aspx

Можно ли выводить изображение (или любой тип файла) в ссылку загрузки, когда пользователь нажимает ссылку на другой странице ASP.NET?

У меня есть имя файла и байт [].

<a href="getfile.aspx?id=1">Get File</a>

... где getfile возвращает файл вместо перехода на страницу getfile.aspx.

Ответы

Ответ 1

Вы бы хотели . ashx для этого действительно;)

public class ImageHandler : IHttpHandler 
{ 
  public bool IsReusable { get { return true; } } 

  public void ProcessRequest(HttpContext ctx) 
  { 
    var myImage = GetImageSomeHow();
    ctx.Response.ContentType = "image/png"; 
    ctx.Response.OutputStream.Write(myImage); 
  } 
}

Ответ 3

Вот как я сделал это в прошлом:

Response.Clear();
Response.Buffer = true;
Response.AddHeader("Content-Disposition", string.Format("inline;filename=\"{0}.pdf\"",Guid.NewGuid()));
Response.ContentType = @"application/pdf";
Response.WriteFile(path);

Ответ 4

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

Ответ 5

Да, это возможно. Есть две части объекта Response, которые необходимо установить: Content-Type и HTTP Header. документация MSDN содержит сведения об объекте ответа, но основная концепция довольно проста. Просто установите код на что-то вроде этого (для документа Word).

Response.ContentType="application/ms-word";
Response.AddHeader("content-disposition", "attachment; filename=download.doc");

Ниже приведен более полный пример здесь

Ответ 6

код codebehind для getfile.aspx должен иметь content-type, и браузер узнает, что это изображение или неизвестный файл и позволит вам сохранить его.

В asp.net вы можете установить ContentType с помощью Response, т.е.

Response.ContentType = "image/GIF"

Здесь у вас есть учебник для динамически сгенерированного образа

Ответ 7

ASHX...

public class ImageHandler : IHttpHandler
{

    public void ProcessRequest(HttpContext ctx)
    {
       string path = ".....jpg";

                byte[] imgBytes = File.ReadAllBytes(path);
                if (imgBytes.Length > 0)
                {
                    ctx.Response.ContentType = "image/jpeg";
                    ctx.Response.BinaryWrite(imgBytes);
                }
    }

    public bool IsReusable
    {
        get {return false;}
    }
}