Jump to content
  • 0

Русские символы в названиях файлов


cmp
 Share

Question

Здравствуйте, уважаемые форумчане.

Описание ситуации: Есть кусок кода на php, который формирует и выводит пользователю ссылки (фактически это ссылки на файлы на сервере). Пользователь жмет на эту ссылку и как интерпретировать файл по ссылке решает браузер. При этом перед формированием ссылки в php, я кодирую строку, где могут быть русские буквы функцией urlencode (пробовал и rawurlencode не помогает).

Описание проблемы: В Firefox все открывается хорошо, т.е. пользователь жмет на ссылку, ФФ предлагает сохранить файл или открыть его (причем имя файла написано русскими буквами). IE же, во-первых, не раскодирует строку, т.е. название файла представляет собой строку, закодированную urlencode и, во-вторых, файлы docx почему-то воспринимает и сохраняет как zip архивы. Я знаю почему он так может делать (docx фактически и является архивом), но у пользователя стоит офис 10, который умеет docx открывать.

Вопрос: как решить приведенную выше проблему?

Link to comment
Share on other sites

10 answers to this question

Recommended Posts

  • 0

Такс, с преобразованием docx в zip разобрался. Это делается потому, что на сервере по умолчанию не установлены mime типы для документов Office 2010 (и седьмого тоже), установил их через .htaccess, написав туда:

AddType application/vnd.openxmlformats .docx .pptx .xlsx

Теперь осталась только одна проблема (точнее вопрос), почему ФФ нормально декодирует строку, закодированную urlencode, а IE не раскодирует ее вообще?

Link to comment
Share on other sites

  • 0

Теперь осталась только одна проблема (точнее вопрос), почему ФФ нормально декодирует строку, закодированную urlencode, а IE не раскодирует ее вообще?

А вы не кодируйте :)

Link to comment
Share on other sites

  • 0

Не могу не кодировать, там имена файлов, они могут и будут содержать русские буквы, если не кодировать, то браузер говорит, что файл не найден. Причем, я повторюсь, ФФ нормально раскодирует символы, проблема только с IE.

Link to comment
Share on other sites

  • 0

Все, все сделал. Только немного не так, как я хотел, но все-же.

Итак, решение: делать не ссылку на файл непосредственно, а делать дополнительный скрипт, который бы отвечал за загрузку файла, вызывать его из главной страницы и методом гет передавать ему или имя файла или (как у меня) его id. Пример кода такого скрипта брал отсюда. Всем спасибо за посильную помощь. Тему можно клоц.

Link to comment
Share on other sites

  • 0

А чем чревато? Файлы закачивают пользователи из организации (небольшой 15-20 человек), вредоносного кода там быть не может (доступа извне вообще нет), оперативу не забьют полностью, т.к. доступ к файлам разграничен и обращения к ним будут редко.

Link to comment
Share on other sites

  • 0

Если файлы мелкие - то не страшно, а если по 300 метров то достаточноу уже 2-3 одновременных соединения на скачку, здесь уже 600 - 900 метров. В итоге конечно решать вам, но лучше исправить скрипт и забыть о проблемах.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy