powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Русские имена в файлах
15 сообщений из 15, страница 1 из 1
Русские имена в файлах
    #36975803
electrod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.

Сделал скачивание файла как в примере, который дает оракл ( http://download.oracle.com/docs/cd/E14373_01/appdev.32/e13363/up_dn_files.htm#CJAHDJDA - Create Download Page for Embedded PL/SQL Gateway).

Имя файла храниться в базе на русском языке в кодировке utf-8, страница также в кодировке utf-8. Но при клике на скачать файл, браузер в окне выбора куда сохранять почему-то отображает название в непонятной кодировке, например, название "Название таблиц.doc" отображается как "!_740=85 B01;8F.doc".

Ктонить сталкивался с этим?
...
Рейтинг: 0 / 0
Русские имена в файлах
    #36978130
Poyasnoy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
electrod,

0.Какой броузер ?
1. Почитайте эту статью, может поможет
...
Рейтинг: 0 / 0
Русские имена в файлах
    #36978134
electrod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
0. Firefox
1. Для FF следуя ссылке должно работать

Код такой

create or replace PROCEDURE "DOWNLOAD_COMPETITOR_FILE" (p_file in number) AS
v_mime VARCHAR2(400);
v_length NUMBER;
v_file_name VARCHAR2(2000);
Lob_loc BLOB;
BEGIN
SELECT d.COMPETITOR_file_mimetype, d.COMPETITOR_file_file, d.COMPETITOR_file_filename
,DBMS_LOB.GETLENGTH(d.COMPETITOR_file_file)
INTO v_mime,lob_loc,v_file_name,v_length
FROM COMPETITOR_file d
WHERE d.COMPETITOR_file_id = p_file;
--
-- set up HTTP header
--
-- use an NVL around the mime type and
-- if it is a null set it to application/octect
-- application/octect may launch a download window from windows
owa_util.mime_header( nvl(v_mime,'application/octet'), FALSE );

-- set the size so the browser knows how much to download
htp.p('Content-length: ' || v_length);
-- the filename will be used by the browser if the users does a save as
htp.p('Content-Disposition: attachment; filename="'||replace(replace(substr(v_file_name,instr(v_file_name,'/')+1),chr(10),null),chr(13),null)|| '"');
-- close the headers
owa_util.http_header_close;
-- download the BLOB
wpg_docload.download_file( Lob_loc );
end download_COMPETITOR_file;
...
Рейтинг: 0 / 0
Русские имена в файлах
    #36979795
non-apexoid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
electrod, какая локаль операционной системы клиента (где запущен браузер)?
...
Рейтинг: 0 / 0
Русские имена в файлах
    #36979855
electrod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
non-apexoid,

Русская
...
Рейтинг: 0 / 0
Русские имена в файлах
    #36980616
non-apexoid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
electrod, конкретно какая? Юникод, cp1251. etc... Можете просто ответить - у меня Windows, вариантов сразу станет меньше.
...
Рейтинг: 0 / 0
Русские имена в файлах
    #36981622
electrod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
non-apexoid,

База и апекс - UTF-8 и энтерпрайз линукс,
FF - в винде, но в FF стоит тоже UTF-8
...
Рейтинг: 0 / 0
Русские имена в файлах
    #37323120
haXbat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Система Apex 4.0.2 + oc4j + Apex Listener 1.0.2
Процедура для скачивания файла некорректно возвращает имя файла в русской транслитерации под всеми браузерами. То же приложение под EPG отрабатывает правильно. Пробовал по всякому pl/sql convert-ом преобразовывать имя файла в процедуре -безрезультатно. Кто-нибудь сталкивался с этим?
...
Рейтинг: 0 / 0
Русские имена в файлах
    #37379043
ArtMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я тоже столкнулся с такой проблемой. Мне кажется проблема в сервере приложений (у меня glassfish). Пробовал делать в через HTTP сервер, все ok.
...
Рейтинг: 0 / 0
Русские имена в файлах
    #37379934
haXbat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtMan,

Не уверен, что дело исключительно в веб-сервере: к примеру APEX_UTIL.DOWNLOAD_PRINT_DOCUMENT выдает у меня под oc4j стандартный диалог для скачивания файла с русскими буквами, а вот WPG_DOCLOAD.download_file кириллицу уже не показывает. Я выкрутился переводом русских названий в латинскую транслитерацию, но это не решение проблемы, а ее обход.
...
Рейтинг: 0 / 0
Русские имена в файлах
    #37387485
dvksqlru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
haXbat, я решил проблему таким образом:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
   IF --Это IE?
   THEN
      HTP.
      P (
            'Content-Disposition:  attachment; filename="'
         || UTL_URL.ESCAPE (FILE_NAME, FALSE, 'UTF-8')
         || '"');
   ELSE
      HTP.
      P (
            'Content-Disposition:  attachment; filename="'
         || FILE_NAME
         || '"');
   END IF;
...
Рейтинг: 0 / 0
Русские имена в файлах
    #37388325
haXbat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dvksqlru,

Спасибо, помогло.
...
Рейтинг: 0 / 0
Русские имена в файлах
    #37644021
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот и я наткнулся на грабли, только с функцией APEX_UTIL.GET_FILE (4.1, этот функционал я так понимаю еще и в других местах используется).

Ковыряния дали, что для FF и опера, он конвертирует имя файла в UTF8, после к заголовку применяет UTL_ENCODE.BASE64_ENCODE, которая возвращает символы перевода строки, на чем заголовки и ломаются.

пример 2 строкиContent-Disposition: attachment; filename="=?utf-8?B?0J4g0L3QsNC/0YDQsNCy0LvQtdC90LjQuCDQsiDQutC+0LzQsNC90LTQuNGA0L7Q
stC60YMuZG9j?="

Полагаю, это можно считать apex bug.

Пока что, сделал так:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
    OWA_UTIL.MIME_HEADER( p_file_mime, false, 'UTF8' );
    HTP.p ('Content-length: ' || DBMS_LOB.getlength( lob_loc => p_file_blob ) );

    IF INSTR(UPPER(OWA_UTIL.GET_CGI_ENV('HTTP_USER_AGENT')), 'MSIE') > 0 THEN

      HTP.p ('Content-Disposition:  attachment; filename="' 
           || UTL_URL.ESCAPE( p_file_name, FALSE ) || '"');
    ELSE
      HTP.p ('Content-Disposition:  attachment; filename="' 
           || p_file_name || '"');
    END IF;
    OWA_UTIL.http_header_close;

    WPG_DOCLOAD.download_file( p_file_blob );
    apex_application.stop_apex_engine;
...
Рейтинг: 0 / 0
Русские имена в файлах
    #37644170
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выше не оттуда скопировал =

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
    owa_util.mime_header( p_file_mime, false );
    htp.p ('content-length: ' || DBMS_LOB.getlength( lob_loc => p_file_blob ) );

    if INSTR(UPPER(OWA_UTIL.GET_CGI_ENV('HTTP_USER_AGENT')), 'MSIE') > 0 then

      htp.p ('Content-Disposition:  attachment; filename="' 
           || UTL_URL.ESCAPE( p_file_name, FALSE, 'UTF-8' ) || '"');
    else
      htp.p ('Content-Disposition:  attachment; filename="' 
           || p_file_name || '"');
    end if;
    owa_util.http_header_close;

    wpg_docload.download_file( p_file_blob );
    apex_application.stop_apex_engine;
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Русские имена в файлах
    #38447444
Куаныш C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот так работает

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
owa_util.mime_header( p_file_mime, false );
    htp.p ('content-length: ' || DBMS_LOB.getlength( lob_loc => p_file_blob ) );

    if INSTR(UPPER(OWA_UTIL.GET_CGI_ENV('HTTP_USER_AGENT')), 'MSIE') > 0 then

      htp.p ('Content-Disposition:  attachment; filename="' 
           || UTL_URL.ESCAPE( p_file_name, FALSE, 'UTF-8' ) || '"');
    else
        htp.p('Content-Disposition:  attachment; filename*=UTF-8'''''||UTL_URL.ESCAPE( p_file_name, FALSE, 'UTF-8' ));
    end if;
    owa_util.http_header_close;

    wpg_docload.download_file( p_file_blob );
    apex_application.stop_apex_engine;
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Русские имена в файлах
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]