Форум программистов, компьютерный форум, киберфорум
C#: Web, ASP.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/22: Рейтинг темы: голосов - 22, средняя оценка - 4.95
0 / 2 / 3
Регистрация: 27.03.2012
1

Странности с Response.BinaryWrite / content-disposition - attachment

01.02.2010, 14:03. Показов 4158. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Следующий код вызывает стандартное окно браузера с диалогом открыть/сохранить. Работает в IE6, в IE5 и IE5.5 выдает окно, но два раза, если выбрать 'открыть' (первый раз для 'download.asp', второй раз для 'file.pdf', после чего все же открывает файл). Вопрос - в чем причина?

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
' -- download.asp
 
Response.Buffer = True
Set oFS = CreateObject("Scripting.FileSystemObject")
Set oFile = oFS.GetFile(Server.MapPath("/papka/file.pdf"))
Set oStream = CreateObject("ADODB.Stream")
With oStream
    .Open
    .Charset = "ascii"
    .Type = 1
    .LoadFromFile oFile.Path
End With
Response.ContentType = "application/pdf"
Response.AddHeader "content-disposition", "attachment; filename=file.pdf"
Response.BinaryWrite oStream.Read
Response.End
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.02.2010, 14:03
Ответы с готовыми решениями:

Проблема с загрузкой файла response.ContentType = 'text/plain' Response.Addheader 'Content-disposition', 'attachment; filename=export.txt'
Есть файл, который содержит response.ContentType = 'text/plain' Response.Addheader...

Проблема с Response.BinaryWrite
Запускаю код, предоставленный smaliq-ом в дискуссии от 24.11.2003г., созданной Alex11111: Set...

Response.BinaryWrite + файл Excel-a
У меня проблема при открытии файла Excel-a командой 'Response.BinaryWrite имя_файла_Excela ' ....

Response.BinaryWrite и пробелы между символами
Использую Response.BinaryWrite для вывода сформированного gif, в результате картинка не...

11
0 / 2 / 3
Регистрация: 27.03.2012
01.02.2010, 14:08 2
добавлю, что сам лично пробовал в IE5.0, об IE5.5 сообщил клиент, у которого якобы совсем файл не открывается. еще странность в том, что после того, как файл по ссылке в IE5.0 был открыт в браузере (в новом окне, у ссылки <a href=download.asp target=_blank>, после вывода диалога дважды, как я и писал), так вот когда второй раз пытаешься открыть файл - он открывается *без всяких диалогов* и *в том же окне*

блин
0
0 / 0 / 0
Регистрация: 28.01.2010
Сообщений: 56
01.02.2010, 14:28 3
Попробуй в самом начале написать

Response.Clear
Response.Expires = -1
Response.ContentType = 'aplication/pdf'
0
0 / 2 / 3
Регистрация: 27.03.2012
01.02.2010, 14:44 4
написал, в самом начале, ничего не изменилось

нажимаешь на ссылку
спрашивает открыть/сохранить download.asp

1) выбираешь открыть
спрашивает открыть/сохранить file.pdf
выбираешь открыть
открывает в новом окне

2) выбираешь сохранить
открывает диалог сохранить с именем file.pdf
сохраняешь
все ок
0
0 / 2 / 3
Регистрация: 27.03.2012
01.02.2010, 15:10 5
похоже, что это просто баг в пятых версиях, поискал в гугле, нашел множество подобных сообщений, о том, что IE не может открыть аттачмент, при том, при всем, что ему прямо сказано content-disposition = attachment

поиграл с различными MIME - все без толку, выход видимо только в определении браузера и если версия ниже 6-й то attachment заменять на inline
0
0 / 0 / 0
Регистрация: 02.11.2009
Сообщений: 4
12.05.2010, 20:59 6
в место
Response.AddHeader 'content-disposition', 'attachment; filename=file.pdf'
нужно
Response.AddHeader 'content-disposition', 'inline; filename=file.pdf'
0
inferno
13.05.2010, 07:23 7
У меня с IE 5.0 (правда с SP3) такой код работает на ура. Единственное я еще кэш отключить пытаюсь:
Visual Basic
1
2
3
4
5
6
    Response.Buffer = true
    Response.Expires = -1
    Response.Expiresabsolute = Now() - 1000
    Response.CacheControl = "no-cache"
    Response.AddHeader "pragma","no-cache"
    Response.AddHeader "cache-control","private"
Maksim
13.05.2010, 07:33 8
У меня похожая проблема...
Вывожу файл в excel, и тоже диалог на открытие файла появляется дважды, только имя файла одно и то-же в обоих случаях...
Причем происходит это только тогда, когда на страницу были переданы какие-то данные методом POST...
Если не были переданы, (к примеру если файл открывается из пустой формы, кнопкой Submit не имеющей имени), то диалог появляется один раз...
Присваиваю имя кнопке, и диалог появляется дважды...

Smalig, если разберешься в чем дело, поделись опытом, хорошо?
Maksim
13.05.2010, 07:44 9
А у меня если вставлена строчка
Response.CacheControl = 'no-cache'
браузер выдает сообщение, что временный файл не найден...
А диалог все равно появляется дважды...
0 / 2 / 3
Регистрация: 27.03.2012
13.05.2010, 11:38 10
я же написал 'решение' 25.11.2003 15:33
или не работает?
0
Xameleon
14.03.2011, 22:38 11
Хм...

Ребяты... А может передать так.. ? application/binary

Тогда файл только сохранится.
Xameleon
17.03.2011, 21:37 12
Был не прав.... .
17.03.2011, 21:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.03.2011, 21:37
Помогаю со студенческими работами здесь

Передача большого файла клиенту через Response.BinaryWrite
Народ... Столкнулся с проблемой Отдаю через ASP скрипт файл клиенту....

Content-disposition для разных браузеров (или как идентифицировать IE)
Добрый день, коллеги! Вопрос, казалось бы, простой, но решения я простого не вижу пока. По...

Как на сервере открыть графический файл получить битовый массив и с помощью Response.BinaryWrite его отдать запрашиваемугу обьекту?
Кто знает как на сервере открыть графический файл получить битовый массив и с помощью...

Content-Disposition: attachment; или Content-Disposition: inline;
использую header('Content-Disposition: attachment; filename='.$str); где $str - файлы с разными...

Content-Disposition, filename, проблема с кодировкой...
Есть страница для загрузки файла, на которой извлекается из базы данных поток, и посылается...

Проблема с передачей файла клиенту через Response.binarywrite
Народ... Я уже во многих форумах спрашивал, но никто не ответил, может хоть вы мне поможите Я из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru