Запрос с передачей файлов (BLOB)

Я пытаюсь сделать запрос и передать файл BLOB (в JIRA). Статус удачный (200), но файл не передается и запрос не возвращает JSON, точнее возвращает, но пустой.

DECLARE  
    l_start TIMESTAMP;  
    l_duration NUMERIC;  
  
    v_login VARCHAR2(100);  
    v_password VARCHAR2(100);  
  
    l_attachment BLOB;  
    l_file_name  VARCHAR2(255);  
    l_mime_type  VARCHAR2(255);  
    
    f_response CLOB;  
      
    p_request_body clob;  
    l_newline VARCHAR2(50) := chr(13) || chr(10);  
    lco_boundary CONSTANT VARCHAR2(30) := 'AaB03x';  

    BEGIN  
        SELECT svalue INTO v_login FROM setup_keys WHERE skey = 'JIRA_LOGIN';  
        SELECT svalue INTO v_password FROM setup_keys WHERE skey = 'JIRA_PASSWORD';  
  
        --SELECT PHOTO INTO f_body_blob FROM LEAN5S_PHOTO WHERE ID = 156;  
          
        SELECT PHOTO, FILENAME, MIMETYPE  
        INTO l_attachment, l_file_name, l_mime_type  
        FROM LEAN5S_PHOTO  
        WHERE ID = 156;  
  
        apex_web_service.g_request_headers.delete;  
        apex_web_service.g_request_headers(1).name := 'Content-Type';  
        apex_web_service.g_request_headers(1).value := 'multipart/form-data; boundary=AaB03x';  
        apex_web_service.g_request_headers(2).name := 'X-Atlassian-Token';  
        apex_web_service.g_request_headers(2).value := 'no-check';  
        --apex_web_service.g_request_headers(3).value := 'Content-Disposition';  
        --apex_web_service.g_request_headers(3).value := 'form-data; name="file"; filename="coronavirus.png"';
  
        --p_request_body := l_newline || '--' || lco_boundary || l_newline ||  
        --            'Content-Disposition: form-data; name="file"; filename="' ||  
        --            l_file_name || '"' || l_newline || 'Content-Type: ' ||  
        --            l_mime_type || l_newline ||  
        --            'Content-Transfer-Encoding: binary' || l_newline ||  
        --            l_newline ||  
        --            apex_web_service.blob2clobbase64(l_attachment) ||  
        --            l_newline || '--' || lco_boundary || '--';  
                      
        l_start := systimestamp;  
          
        f_response := apex_web_service.make_rest_request(p_url => 'http://site/rest/api/2/issue/key/attachments',    
                                                         p_http_method => 'POST',  
                                                         p_username => v_login,  
                                                         p_password => v_password,  
                                                         --p_body => p_request_body,  
                                                         p_body_blob => l_attachment  
        );  
        l_duration := round(extract(second from systimestamp - l_start) * 1000);  
        dbms_output.put_line(apex_web_service.g_status_code || ' ' || f_response);  
    END;

Думаю проблема в body моего запроса, но не знаю как правильно реализовать.

Сначала попробовал загрузить файлы при помощи Postman - все получилось без проблем. Файлы загружаются, JSON приходит корректный.

POST /rest/api/2/issue/key/attachments HTTP/1.1
Host: site
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
X-Atlassian-Token: no-check
Authorization: Basic YXBleEBzYmEubHQ6YXBleA==
Cookie: JSESSIONID=B4CD82EB597105AD861A1403A98BB151; atlassian.xsrf.token=BU1Q-ZF5J-MN8N-D09A_c28e4c48669e4cde15138661b021218db9cbf200_lin

----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="file"; filename="/C:/.../Desktop/jira-logo-scaled.png"
Content-Type: <Content-Type header here>

(data)
----WebKitFormBoundary7MA4YWxkTrZu0gW

Ответы (0 шт):