Страница: 1 |
Страница: 1 |
Вопрос: имя файла из вебхранилища-плиз хелп ми!
Добавлено: 22.01.06 21:39
Автор вопроса: Janek
проблема с кодировкой имени файла, который грузится к клиенту из web-хранилища. Пока используются не русские буквы - все оченеь хорошо, но как только имя файла задается на кириллице - ...........
кусок кода - параметры берутся из SQL, висит все под IIS на ASPX:
Response.Buffer = True
Response.ContentType = ContentType
Response.AppendHeader("Content-Disposition", "attachment; filename=" & HttpUtility.UrlPathEncode(docName))
Response.WriteFile("C:\WF\STORAGE\" & documentId)
например вордовский документ при открытии со страницы ASPX по гиперссылке, грузится и если имя англ.буквами- в заголовке окна ворда все правильно, а если кирилица, то в заголовке окна ворда в кодировке utf-8 караул....
регион в web.config менял - не помогает.
Ответы
Всего ответов: 11
Номер ответа: 1
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #1
Добавлено: 22.01.06 22:52
А что мешает конвертировать текст в нужную кодировку? Format (Text,
кодировка...)
Номер ответа: 2
Автор ответа:
[root]
Вопросов: 45
Ответов: 1212
Web-сайт:
Профиль | | #2
Добавлено: 23.01.06 08:26
так лучше и вовсе не использовать русских букв.
Номер ответа: 3
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #3
Добавлено: 23.01.06 08:53
Сдаётся мне, что мешает HttpUtility.UrlPathEncode.
Номер ответа: 4
Автор ответа:
AsHeS
ICQ: 229759992
Вопросов: 14
Ответов: 93
Профиль | | #4
Добавлено: 23.01.06 09:41
Может я не в тему . Но насколько я понял веб хранилище - веб сайь А инете все русские символы кодирують в хексе . Я сам недавно спрашивал про это . Если я прав , то скажи - дам ссылку - там написанно как перекодировать из хекса и в хекс
Номер ответа: 5
Автор ответа:
Janek
Вопросов: 41
Ответов: 62
Профиль | | #5
Добавлено: 23.01.06 19:47
сорри, наверное не понятно изложил вопрос.
Есть веб-хранилище документов(типа обычной папки в сети, только можно складывать документы с одинаковым именем), какое имя документу задать - решает пользователь(чтобы хоты бы ему было понятно,что он хотел). Содержимое веб-хранилища вываливается на страницу ASPX в виде ссылок(после установки критериев отбора,типа поиска). При нажатии на ссылку документ открывается в приложении, в котором его создали, например MSWord. А у Worda есть заголовок окна(в самом верху на синей полосе) и если название фокумента английскими буквами-все хорошо, но как только кирилица-совсем плохо.
Response.AppendHeader("Content-Disposition", "attachment; filename=" & HttpUtility.UrlPathEncode(docName)) - docName это то, что отображается в заголовке, берется из SQL. Настройки IIS уже все перепробовал, web.config тоже.
Номер ответа: 6
Автор ответа:
[root]
Вопросов: 45
Ответов: 1212
Web-сайт:
Профиль | | #6
Добавлено: 23.01.06 20:11
Павел вроде писал, что дело может быть в:
Номер ответа: 7
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #7
Добавлено: 23.01.06 20:23
Попробуйте реализовать свой метод кодирования имени файла... Думаю, что UrlPathEncode кодирует строку в 2-байтовый Hex-escape, то есть что-то вроде %g4ha%4fa3%fa4d (можете проверить это какой-нибудь утилитой вроде Fiddler), и эту строку не воспринимает как следует браузер. Попробуйте кодировать строку в 1-байтовую Hex-кодировку, вроде %C2%F3%DD
Номер ответа: 8
Автор ответа:
Janek
Вопросов: 41
Ответов: 62
Профиль | | #8
Добавлено: 24.03.06 19:12
а можно ли на стороне клиента файл по сслылке со страницы типа http://main/getF.aspx?id=7 с помощью скрипта забрать из потока ответа и записать в папку на клиенте, а потом открыть?
Прикол получается в том, что теперь при нажатии на ссылку на файл, появляется окно- "открыть/Сохранить файл". В заголовке этого окна русские буквы уже отображаются правильно. Но если нажать "Открыть" - по в окне приложения опять каракули. А если нажать "Сохранить" - после успешной загрузки на комп клиента появляется окно "Открыть файл/папку/отменить" - если нажать "Открыть" - в заголовке окна приложения все хорошо - русские буквы отображаются нормально. Как сделать, чтобы окно "Открыть/Сохранить файл" на клиенте не появлялось, а вместо этого файл сохранялся в заданную папку, а потом открывался?
Номер ответа: 9
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #9
Добавлено: 24.03.06 19:18
Такое практически невозможно.
Для таких партизанских действий нужна соответствующая настройка политики безопасности браузера.
Номер ответа: 10
Автор ответа:
Janek
Вопросов: 41
Ответов: 62
Профиль | | #10
Добавлено: 24.03.06 21:00
подобное работает в SharePoint Portal 2003, причем именно вариант JS + ASPX.........
при нажатии мышью на ссылку на документ, запускается скрипт и документ сливается с сервера клиенту,а потом открывается... и причем хоть с китайским языком - работает!
Номер ответа: 11
Автор ответа:
Janek
Вопросов: 41
Ответов: 62
Профиль | | #11
Добавлено: 07.07.06 20:17
Оказалось, что надо сделать так - и все работает!
Response.ContentType = "application/octet-stream"
Response.ContentEncoding = System.Text.Encoding.GetEncoding("windows-1251"
Response.HeaderEncoding = System.Text.Encoding.GetEncoding("windows-1251"