powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Response.WriteFile() ?
10 сообщений из 10, страница 1 из 1
Response.WriteFile() ?
    #38854647
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такая "копипаста" в проекте WebForms. Работает во всех браузерах, кроме IE. Как и во всех браузерах после нажатия кнопки в IE появляется приглашение "Открыть"/"Сохранить", но ни одно из них не работает: "Фаил не может быть загружен или испорчен". В остальных браузерах этот PDF документ прекрасно открывается или сохраняется.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
    Protected Sub PrintButton_Click(sender As Object, e As System.EventArgs) Handles PrintButton.Click
        Dim filePath As String = Server.MapPath("~") & "\upload\wo-list.pdf"
        Dim msg As String

        Try
            msg = mngData.MergePDF(Server.MapPath("~") & "\upload\")
            If msg <> "" Then
                ClassHelper.SMessageBox(msg, Me)
            Else
                Response.Clear()
                Response.ClearContent()
                Response.ClearHeaders()
                Response.AppendHeader("content-disposition", "attachment;filename=WO-LIST.pdf")
                Response.ContentType = "application/pdf"
                Response.WriteFile(filePath)
                Response.Flush()
                Response.Close()
                Response.End()
            End If
        Catch ex As Exception
            ClassHelper.SMessageBox(ex.Message, Me)
        Finally
        End Try

    End Sub

...
Рейтинг: 0 / 0
Response.WriteFile() ?
    #38854738
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй избавиться от всех Clear и Flush. И еще говорят, что лучше не WriteFile, а TransmitFile.
...
Рейтинг: 0 / 0
Response.WriteFile() ?
    #38854743
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

То, что вы предлагаете - пробовал, поэтому и написал. Код рабочий. Работает в FF, Chrome, Safari.
...
Рейтинг: 0 / 0
Response.WriteFile() ?
    #38854819
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
      
  public static void WriteResponsePdf(string filePath, string targetFileName)
        {
            if (String.IsNullOrEmpty(filePath)) return;
            if (HttpContext.Current == null) return;
            var response = HttpContext.Current.Response;
            response.Clear();
            response.Charset = "utf-8";
            response.ContentType = "text/pdf";
            response.AddHeader("content-disposition", string.Format("attachment; filename={0}", targetFileName));
            response.BinaryWrite(File.ReadAllBytes(filePath));
            response.Flush();
            //response.End();
 }


у утра протестил на 10 осле, работает вроде как
...
Рейтинг: 0 / 0
Response.WriteFile() ?
    #38855048
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic Hunter,
тынц
...
Рейтинг: 0 / 0
Response.WriteFile() ?
    #38855089
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic Hunter,

вот рабочий на моем сервере код, открывающий/сохраняющий в IE8 (ну, и т.д.)

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Protected Sub DownFile(ByVal sender As Object, ByVal e As EventArgs)
        Dim strFilePath As String = Server.MapPath("Files/" & strDownFile)
        Dim objFile As FileInfo = New FileInfo(strFilePath)
        If objFile.Exists Then
            Dim strAsterisk As String = String.Empty
            If Request.Browser.Browser.ToLower.StartsWith("firefox") Then
                strAsterisk = "filename*="
            Else
                strAsterisk = "filename="
            End If
            Response.Clear()
            Response.ContentType = "application/octet-stream"
            Response.AddHeader("Content-Disposition", "attachment;" + strAsterisk + Server.UrlPathEncode(objFile.Name))
            Response.Charset = "windows-1251"
            Response.AddHeader("Content-Length", objFile.Length.ToString())
            Response.Flush()
            Response.WriteFile(objFile.FullName)
            Response.End()
        End If
    End Sub
...
Рейтинг: 0 / 0
Response.WriteFile() ?
    #38855104
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
там strDownFile = имя файла ...
...
Рейтинг: 0 / 0
Response.WriteFile() ?
    #38855149
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carrotikRelic Hunter,

вот рабочий на моем сервере код, открывающий/сохраняющий в IE8 (ну, и т.д.)

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Protected Sub DownFile(ByVal sender As Object, ByVal e As EventArgs)
        Dim strFilePath As String = Server.MapPath("Files/" & strDownFile)
        Dim objFile As FileInfo = New FileInfo(strFilePath)
        If objFile.Exists Then
            Dim strAsterisk As String = String.Empty
            If Request.Browser.Browser.ToLower.StartsWith("firefox") Then
                strAsterisk = "filename*="
            Else
                strAsterisk = "filename="
            End If
            Response.Clear()
            Response.ContentType = "application/octet-stream"
            Response.AddHeader("Content-Disposition", "attachment;" + strAsterisk + Server.UrlPathEncode(objFile.Name))
            Response.Charset = "windows-1251"
            Response.AddHeader("Content-Length", objFile.Length.ToString())
            Response.Flush()
            Response.WriteFile(objFile.FullName)
            Response.End()
        End If
    End Sub

Content-Length устанавливается автоматически.
...
Рейтинг: 0 / 0
Response.WriteFile() ?
    #38855190
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

...я знаю, что это не пример для учебников, и в нем кучу недостатков можно найти, просто как пример работающего кода ..
...
Рейтинг: 0 / 0
Response.WriteFile() ?
    #38855539
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот это помогло (у меня IE11)....

http://stackoverflow.com/questions/15606063/response-writefile-not-working-ie-10-on-production-server

Всем спасибо.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Response.WriteFile() ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]