Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 base64 to oracle  [new]
IBR
Member

Откуда:
Сообщений: 140
Привет,всем!
есть процедура которая получает данные через web-service,так вот к нам будет приходить файлик, содержимое которого в кодировке base64.
пытаюсь в clob записать,ругается.как решить эту проблему?может есть какие то "convert" функции?
3 фев 14, 16:54    [15511632]     Ответить | Цитировать Сообщить модератору
 Re: base64 to oracle  [new]
123йй
Member

Откуда:
Сообщений: 1638
IBR,
utl_raw.cast_to_varchar2(utl_encode.base64_decode
3 фев 14, 16:59    [15511671]     Ответить | Цитировать Сообщить модератору
 Re: base64 to oracle  [new]
.
Guest
IBR,

ругается матом?
3 фев 14, 17:04    [15511695]     Ответить | Цитировать Сообщить модератору
 Re: base64 to oracle  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
IBR,

select A.owner  
      ,A.object_name  
      ,B.object_name  as proc_name
  from all_objects A
      ,all_arguments B
 where A.object_type in ('PACKAGE','PROCEDURE','FUNCTION')
   and B.object_id = A.object_id
   and B.owner = A.owner
   and B.sequence in (0,1)
and B.object_name like '%B%64%';
3 фев 14, 17:04    [15511700]     Ответить | Цитировать Сообщить модератору
 Re: base64 to oracle  [new]
IBR
Member

Откуда:
Сообщений: 140
orawish,

orawish,ты как всегда на высоте)))
3 фев 14, 17:12    [15511769]     Ответить | Цитировать Сообщить модератору
 Re: base64 to oracle  [new]
IBR
Member

Откуда:
Сообщений: 140
к дополнению к этой теме....
ситуация следующая...по web сервису отправляю запрос,приходит ответ...в ответе есть атрибуты типа char,number и base64....
записываю в табл,где тип поля clob
data clob;
.....
.....
SoapResponse := sys.utl_http.get_response(SoapRequest);
utl_http.read_text(SoapResponse, data);
insert into v_clob values(data);


Данные записались в таблицу,но есть одно (НО!),я не могу прочитать данные из этой таблицы,что я не так делаю?

P/S: файл,который приходит в формате base64,содержит в себе картинку и данные.
4 фев 14, 10:17    [15514336]     Ответить | Цитировать Сообщить модератору
 Re: base64 to oracle  [new]
IBR
Member

Откуда:
Сообщений: 140
 SELECT  extractvalue(value(x), '//*[local-name()="idFile"]'),   --integer
                            => extractvalue(value(x), '//*[local-name()="fileCont"]') --base64
                                 into vResult,iFileId,cFileType--,                   
                            FROM table(xmlsequence(xmltype(DATA,'SOAP-ENV:', '')))) x;
4 фев 14, 10:32    [15514423]     Ответить | Цитировать Сообщить модератору
 Re: base64 to oracle  [new]
IBR
Member

Откуда:
Сообщений: 140
выходит ошибка
ORA-31011: сбой разбора XML
ORA-19202: Возникла ошибка при обработке XML 
LPX-00007: unexpected end-of-file encountered
ORA-06512: на  "SYS.XMLTYPE", line 272
4 фев 14, 10:33    [15514432]     Ответить | Цитировать Сообщить модератору
 Re: base64 to oracle  [new]
MazoHist
Guest
IBR
SoapResponse := sys.utl_http.get_response(SoapRequest);
utl_http.read_text(SoapResponse, data);
insert into v_clob values(data);[/b]


А вы уверены, что одним read_text забрали все что пришло в ответ?
  http_resp := utl_http.get_response(http_req);
  begin
    loop
       utl_http.read_text(http_resp,vRespBuf,32767);
       vSoapResp:=vSoapResp||vRespBuf;
    end loop;
  exception
    when utl_http.end_of_body then
      utl_http.end_response (http_resp);
  end;
4 фев 14, 11:23    [15514804]     Ответить | Цитировать Сообщить модератору
 Re: base64 to oracle  [new]
IBR
Member

Откуда:
Сообщений: 140
MazoHist,
ну,да..если на стороне web сервиса убрать атрибут "файл",все замечательно работает..
как только его добавляют появляется ошибка...
4 фев 14, 11:28    [15514830]     Ответить | Цитировать Сообщить модератору
 Re: base64 to oracle  [new]
IBR
Member

Откуда:
Сообщений: 140
MazoHist,

 ==> vSoapResp:=vSoapResp||vRespBuf; --vSoapResp тип clob? 

ответ пришел,но не полностью...
4 фев 14, 11:38    [15514898]     Ответить | Цитировать Сообщить модератору
 Re: base64 to oracle  [new]
MazoHist
Guest
IBR
MazoHist,

 ==> vSoapResp:=vSoapResp||vRespBuf; --vSoapResp тип clob? 

ответ пришел,но не полностью...


  vSoapResp clob;
  vRespBuf varchar2(32767);
  http_req  utl_http.req;
  http_resp utl_http.resp;
4 фев 14, 11:40    [15514912]     Ответить | Цитировать Сообщить модератору
 Re: base64 to oracle  [new]
IBR
Member

Откуда:
Сообщений: 140
MazoHist,

 create table c_rep (res clob);
procedure(cData clob) 
is
   cFileContent     clob;
begin 
SELECT  extractvalue(value(x), '//*[local-name()="fileCont"]') 
                      into vRe cFileContent
                    FROM table(xmlsequence(xmltype(replace(cData, 'SOAP-ENV:', '')))) x;

insert into rep  values(cFileContent);
 



насколько это правильно?
4 фев 14, 11:51    [15515003]     Ответить | Цитировать Сообщить модератору
 Re: base64 to oracle  [new]
IBR
Member

Откуда:
Сообщений: 140
при выполнении предыдущего скрипта вылетает ошибка
ORA-01706: результат функции пользователя был слишком велик
4 фев 14, 12:03    [15515112]     Ответить | Цитировать Сообщить модератору
 Re: base64 to oracle  [new]
IBR
Member

Откуда:
Сообщений: 140
как достать clob или blob из xml?
4 фев 14, 12:29    [15515345]     Ответить | Цитировать Сообщить модератору
 Re: base64 to oracle  [new]
IBR
Member

Откуда:
Сообщений: 140
где капать?киньте кто нить ссылочку?
4 фев 14, 12:58    [15515638]     Ответить | Цитировать Сообщить модератору
 Re: base64 to oracle  [new]
Mit
Member

Откуда: Мытищи
Сообщений: 819
IBR,

Покажите пример ответа.
4 фев 14, 13:02    [15515680]     Ответить | Цитировать Сообщить модератору
 Re: base64 to oracle  [new]
IBR
Member

Откуда:
Сообщений: 140
Mit,

0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAADAAAASAEAAAAAAAAAEAAASgEAAAEAAAD+////AAAAAEUBAABGAQAARwEAAP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////  и т.д. и т.п. 

размер файл 200 кб,содержимое - картинка и текст.
4 фев 14, 13:14    [15515815]     Ответить | Цитировать Сообщить модератору
 Re: base64 to oracle  [new]
MazoHist
Guest
А заархивировать и приаттачить весь response (cData) возможно? или там секретно?
4 фев 14, 13:55    [15516299]     Ответить | Цитировать Сообщить модератору
 Re: base64 to oracle  [new]
IBR
Member

Откуда:
Сообщений: 140
MazoHist,
как бы секретно))
ни у кого нет идей,как принять такой файл,далее привести его в нормальный,читабельный вид?
4 фев 14, 14:04    [15516388]     Ответить | Цитировать Сообщить модератору
 Re: base64 to oracle  [new]
-2-
Member

Откуда:
Сообщений: 15330
IBR
при выполнении предыдущего скрипта вылетает ошибка
ORA-01706: результат функции пользователя был слишком велик
select length(".") len, substr(".", 1, 3)||'...'||substr(".", 2e5-3) str
from xmltable(
   '/x'
   passing xmltype(rpad(to_clob('<x>a'), 2e5+2, '0')||'z</x>')
   columns "." clob
) "11g";

       LEN STR          
---------- -------------
    200000 a00...000z   
4 фев 14, 14:19    [15516533]     Ответить | Цитировать Сообщить модератору
 Re: base64 to oracle  [new]
IBR
Member

Откуда:
Сообщений: 140
-2-,
на моем примере,как это будет выглядить?
4 фев 14, 14:38    [15516676]     Ответить | Цитировать Сообщить модератору
 Re: base64 to oracle  [new]
Mit
Member

Откуда: Мытищи
Сообщений: 819
IBR
Mit,

0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAADAAAASAEAAAAAAAAAEAAASgEAAAEAAAD+////AAAAAEUBAABGAQAARwEAAP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////  и т.д. и т.п. 

размер файл 200 кб,содержимое - картинка и текст.


Так выше 123й правильный же пример давал
utl_encode.base64_decode(utl_raw.cast_to_raw(sResultBinaryData)
4 фев 14, 15:07    [15516985]     Ответить | Цитировать Сообщить модератору
 Re: base64 to oracle  [new]
IBR
Member

Откуда:
Сообщений: 140
Mit,

Его же для начала нужно вытянуть из XML,а только потом уже делать convert/decode.
вся проблема в том,что я не могу вытянуть файл с кодировкой base64 из xml.
а точнее,этот селект не может прочитать содержимое файла
SELECT  extractvalue(value(x), '//*[local-name()="fileCont"]') 
                      into vRe cFileContent
                    FROM table(xmlsequence(xmltype(replace(cData, 'SOAP-ENV:', '')))) x;

вылетает ошибка : ORA-01706: результат функции пользователя был слишком велик


При чтение других атрибутов из XML,проблем нет.
4 фев 14, 15:12    [15517038]     Ответить | Цитировать Сообщить модератору
 Re: base64 to oracle  [new]
123йй
Member

Откуда:
Сообщений: 1638
IBR,

     into [b]vRe[/b] cFileContent
4 фев 14, 15:17    [15517081]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить