Quantcast
Channel: Active questions tagged rest - Stack Overflow
Viewing all articles
Browse latest Browse all 4051

Post Rest API to upload pdf or jpg file from Oracle 21c

$
0
0

I need to send some documents to my server from my Oracle application, for this reason I created an API on my server using php

The API tested by PostMan and I can upload any file type.

Now I need to integrate it with my Oracle App, but I never write Oracle code ever. I used ChatGPT and check some resources on google to integrate it with following code:

    CREATE OR REPLACE PROCEDURE read_pdf_file(p_file_name IN VARCHAR2, p_blob OUT BLOB) AS      l_bfile BFILE;    BEGIN      l_bfile := BFILENAME('PDF_DIR', p_file_name);      DBMS_LOB.OPEN(l_bfile, DBMS_LOB.LOB_READONLY);      DBMS_LOB.CREATETEMPORARY(p_blob, TRUE);      DBMS_LOB.LOADFROMFILE(p_blob, l_bfile, DBMS_LOB.GETLENGTH(l_bfile));      DBMS_LOB.CLOSE(l_bfile);    END read_pdf_file;    /***************************************************  CREATE OR REPLACE PROCEDURE send_FILE_to_api(p_url IN VARCHAR2, p_file_name IN VARCHAR2) IS      l_blob BLOB;      l_base64 CLOB;      l_http_req UTL_HTTP.req;      l_http_resp UTL_HTTP.resp;      l_resp_text VARCHAR2(32767);      l_boundary VARCHAR2(64) := '----WebKitFormBoundary7MA4YWxkTrZu0gW';      l_crlf VARCHAR2(2) := CHR(13) || CHR(10);      l_body CLOB;      l_buffer        VARCHAR2(32767);      l_clob CLOB ;      l_offset INTEGER := 1;      l_chunk_size CONSTANT INTEGER := 32767;      l_chunk VARCHAR2(32767);      l_clob_len INTEGER;      l_read_len INTEGER ;       l_fix_inc INTEGER := 4000 ;      amount BINARY_INTEGER := 32760;      l_buffersize  number := 32767;      l_vc  varchar2(32767);    BEGIN       -- Read the PDF file into a BLOB      read_pdf_file(p_file_name, l_blob);      l_clob := clobfromblob(l_blob) ;      -- Construct the HTTP request body      DBMS_LOB.CREATETEMPORARY(l_body, TRUE);      DBMS_LOB.WRITEAPPEND(l_body, LENGTH('--' || l_boundary || l_crlf), '--' || l_boundary || l_crlf);      DBMS_LOB.WRITEAPPEND(l_body, LENGTH('Content-Disposition: form-data; name="file"; filename="' ||      p_file_name || '"' || l_crlf), 'Content-Disposition: form-data; name="file"; filename="' || p_file_name || '"' || l_crlf);      DBMS_LOB.WRITEAPPEND(l_body, LENGTH('Content-Type: application/pdf' || l_crlf || l_crlf), 'Content-Type: application/pdf' || l_crlf || l_crlf);      DBMS_LOB.APPEND(l_body, l_clob);      DBMS_LOB.WRITEAPPEND(l_body, LENGTH(l_crlf || '--' || l_boundary || '--' || l_crlf), l_crlf || '--' || l_boundary || '--' || l_crlf);      -- Make the HTTP request      UTL_HTTP.set_wallet('file:C:\WALLET', 'Tensor123');      UTL_HTTP.set_transfer_timeout(60);      l_http_req := UTL_HTTP.begin_request(p_url, 'POST', 'HTTP/1.1');      UTL_HTTP.set_header(l_http_req, 'Content-Type', 'multipart/form-data; boundary=' || l_boundary);      UTL_HTTP.set_header(l_http_req, 'Content-Length', DBMS_LOB.GETLENGTH(l_body));      l_clob_len := DBMS_LOB.GETLENGTH(l_body);      while (l_offset <= l_clob_len)       loop        l_vc := dbms_lob.substr(l_body, l_buffersize, l_offset);        UTL_HTTP.write_text(l_http_req, SUBSTR(l_vc, l_offset, l_buffersize));        l_offset := l_offset + l_buffersize;      end loop;      l_http_resp := UTL_HTTP.get_response(l_http_req);      -- Read the response      BEGIN        LOOP          UTL_HTTP.read_text(l_http_resp, l_resp_text);          DBMS_OUTPUT.put_line(l_resp_text);        END LOOP;      EXCEPTION         WHEN UTL_HTTP.end_of_body THEN          NULL;      END;      UTL_HTTP.end_response(l_http_resp);    END send_FILE_to_api ;

Using above code I can upload text files but when I try to upload pdf file I did not get any respond

I need some help to improve the code and upload pdf, jpg file using REST API from my Oracle app


Viewing all articles
Browse latest Browse all 4051

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>