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);
}
}
Ответ 2
Как создать текстовое изображение на лету с помощью ASP.NET
Что-то вроде этого:
string Path = Server.MapPath(Request.ApplicationPath + "\image.jpg");
Bitmap bmp = CreateThumbnail(Path,Size,Size);
Response.ContentType = "image/jpeg";
bmp.Save(Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg);
bmp.Dispose();
Ответ 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;}
}
}