Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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-сайт: bit.pirit.info
 Профиль | | #2
Добавлено: 23.01.06 08:26
так лучше и вовсе не использовать русских букв.

Ответить

Номер ответа: 3
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #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-сайт: bit.pirit.info
 Профиль | | #6
Добавлено: 23.01.06 20:11
Павел вроде писал, что дело может быть в:
HttpUtility.UrlPathEncode(docName)


Ответить

Номер ответа: 7
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #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-сайт: www.vbnet.ru
 Профиль | | #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";)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам