Скачать изображение ASHX Сохранено как ASHX - PullRequest
1 голос
/ 06 апреля 2011

Когда пользователь нажимает на мою ссылку, он вызывает диалоговое окно сохранения как, но он хочет сохранить его как файл Ashx в любом другом браузере, кроме IE. Файл является стандартным JPEG, который берется из базы данных. Что заставило бы это сделать?

       string id = ctx.Request.QueryString["id"];

        SqlConnection con = new SqlConnection();
        SqlCommand cmd = new SqlCommand("EBig", con);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@EID", id);

        byte[] pict = null;
        ctx.Response.ContentType = "image/pjpeg";
        try
        {
            con.Open();
            pict = (byte[])cmd.ExecuteScalar();

            ctx.Response.Clear();

            ctx.Response.AppendHeader("content-disposition", "attachment;");
            ctx.Response.ContentType = "image/pjpeg";
            ctx.Response.BinaryWrite(pict);
            ctx.Response.Flush();
            ctx.Response.End();
        }
        catch
        {

        }
        finally
        {
            con.Close();
        }

Ответы [ 2 ]

3 голосов
/ 06 апреля 2011

У Хансельмана есть сообщение по этому вопросу. Он включает в себя установку дополнительного атрибута с именем filename в заголовке ответа Content-Disposition.

Соответствующий RFC здесь , соответствующий раздел 2.3:

Отправитель может предложить использовать имя файла, если объект отдельно и хранятся в отдельном файле. Если получающий MUA пишет сущность в файл, предложенное имя файла должно использоваться как основа для фактического имени файла, где это возможно.

0 голосов
/ 06 апреля 2011

Вам необходимо добавить имя файла:

context.Response.AppendHeader("Content-Disposition",
    string.Format("attachment;filename={0}", yourFileName));
...