Изменение имени в заголовке для обработчика ресурса в C #

StackOverflow https://stackoverflow.com/questions/251307

Вопрос

У меня есть обработчик ресурса Response.WriteFile (fileName), основанный на параметре, переданном через строку запроса. Я правильно обрабатываю mimetype, но проблема в некоторых браузерах: имя файла выглядит как Res.ashx (имя обработчика) вместо MyPdf.pdf (файл, который я выводю). Может кто-нибудь сообщить мне, как изменить имя файла при его отправке обратно на сервер? Вот мой код:

// Get the name of the application
string application = context.Request.QueryString["a"];
string resource = context.Request.QueryString["r"];

// Parse the file extension
string[] extensionArray = resource.Split(".".ToCharArray());

// Set the content type
if (extensionArray.Length > 0)
    context.Response.ContentType = MimeHandler.GetContentType(
        extensionArray[extensionArray.Length - 1].ToLower());

// clean the information
application = (string.IsNullOrEmpty(application)) ?
    "../App_Data/" : application.Replace("..", "");

// clean the resource
resource = (string.IsNullOrEmpty(resource)) ?
    "" : resource.Replace("..", "");

string url = "./App_Data/" + application + "/" + resource;


context.Response.WriteFile(url);
Это было полезно?

Решение

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

context.Response.AddHeader("content-disposition", "attachment; filename=" + resource);

Другие советы

Это сообщение Скотта Хансельмана должно быть полезным:
http://www.hanselman.com/blog/CommentView.aspx?guid= 360

Спасибо, ребята, за ваш ответ. Окончательный код работает и проверяет PDF.

if (extensionArray[extensionArray.Length - 1].ToLower() == "pdf")
    context.Response.AddHeader("content-disposition", 
        "Attachment; filename=" + resource);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top