ASP.NET добавить httphandler для редактирования загруженного имени файла
У меня в проекте есть страница DownloadDocument.aspx
и это codebhind это DownloadDocument.aspx.cs
В моем DownloadDocument.aspx
у меня есть якорь, который принимает динамическую ссылку, как это:
<a id="downloadLink" runat="server" style="margin:5px"
href="<%# CONTENT_DIRECTORY_ROOT + document.Path %>">Download current file</a>
Я хочу добавить httphandler для контроля загруженного имени файла. Как я могу это сделать? Заранее спасибо.
3 ответа
Как насчет использования универсального обработчика (.ashx) для этого?
Вам нужно добавить информацию о загрузке, такую как имя файла, тип контента и сам контент. Образец должен дать вам хороший старт.
public class GetDownload : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
if (!string.IsNullOrEmpty(context.Request.QueryString["IDDownload"]))
{
context.Response.AddHeader("content-disposition", "attachment; filename=mydownload.zip");
context.Response.ContentType = "application/octet-stream";
byte[] rawBytes = // Insert loading file with IDDownload to byte array
context.Response.OutputStream.Write(rawBytes, 0, rawBytes.Length);
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
Общий обработчик вызывается из URL, например так:
<a href="/GetDownload.ashx?IDDownload=1337">click here to download</a>
Это зависит от типа файла, который вы пытаетесь загрузить... потому что каждый запрос прошел HTTPHandler
"s ProcessRequest
, и он проверяет каждый запрос по одному.. Вам нужно добавить любой HTTPHandler
к вашему проекту и нужно добавить что-то подобное в ваш web.config
,
<httpHandlers>
<add path="*.jpg,*.jpeg,*.bmp,*.tif,*.tiff" verb="*" type="NameofYourHandler" />
</httpHandlers>
Это проверит ваш запрос для каждого Image
типа.. упоминается в path
атрибут
Редактировать:
<add verb="*" path="*DownloadDocument.aspx " type="NameofYourHandler"/>
Вы можете попробовать с этим кодом
<httpHandlers>
<add
verb="POST"
path="*.jpg,*.jpeg,*.bmp,*.tif,*.tiff"
type="YourHandler" />
</httpHandlers>