Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Аплоад файлов с не английским именем 
V
    Опции темы
infarch
Дата 19.9.2012, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 13.3.2009

Репутация: нет
Всего: 1



Возникла некая странность у меня. 
Есть форма, в упрощенном виде вот такая:

Код

<html>
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body>
    <form method="post" name="data" action="/controller" enctype="multipart/form-data" accept-charset="UTF-8">

      <input type="file" name="file_1" />
      <input type="text" name="subject_1" />

      <input type="submit" value="Ok" />

    </form>
  </body>
</html>


Данные с нее принимает перл скрипт работающий под apache+mod_perl.

Код


use strict;

binmode( STDOUT, ':encoding(utf8)' );

use CGI ();
CGI->compile(':all');

my $cgi = $cgi->new();

request_log($cgi); # реквестлог просто пишет все что пришло в базу

...



Я выбираю файл с именем "картиночка 日本国.jpg" и ввожу сабжект по русски. После сабмита в логе вижу:

[file_1 = картиночка 日本国.PNG]
[subject_1 = комент]

Ожидаемо smile ... Добавляю поддержку ютф8 к CGI: CGI->compile(':all', ':utf8'); и теперь уже в логе кое-что получше:

[file_1 = картиночка 日本国.PNG]
[subject_1 = комент]

Теперь cgi->param для сабжекта возвращает раскодированную строку. А вот для имени файла - нет. И собственно вопрос: нельзя ли научить модуль делать и это тоже? Я конечно могу перед сабмитом взять жаваскриптом это имя и просто кинуть его в хиден инпут. Но формочек у меня много, даже нет - МНОГО. Да и в логах лишняя запись будет, а это не очень хорошо при высокой нагрузке. В общем, прошу посоветовать разумный выход...


PM MAIL   Вверх
infarch
Дата 21.9.2012, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 13.3.2009

Репутация: нет
Всего: 1



Изучил код модуля CGI и понял что нет там такой настройки :( Пришлось переписать логгер, научить отличать строку от хендлера. И сам обработчик аплоада у меня вынесен в отдельную универсальную функцию, добавил decode. Так что закрываю тему.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.0661 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.