From 93191ec65d699c8dd615ed731fade81578e675ed Mon Sep 17 00:00:00 2001 From: "Simon C. Kessler" Date: Thu, 23 Apr 2026 15:27:52 +0200 Subject: [PATCH] =?UTF-8?q?put=5Fobject=20f=C3=BCr=20leere=20und=20nicht?= =?UTF-8?q?=20leere=20dateien=20getestet=20und=20korrigiert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- database/packages/pck_net_storage.pkb | 30 +++++++++++++++------------ 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/database/packages/pck_net_storage.pkb b/database/packages/pck_net_storage.pkb index d4c0112..7c575e5 100644 --- a/database/packages/pck_net_storage.pkb +++ b/database/packages/pck_net_storage.pkb @@ -131,6 +131,8 @@ create or replace package body pck_net_storage as l_header_index number := 1; l_content_length number; begin + -- headers zurücksetzen - nur zur Sicherheit, damit keine alten Header übertragen werden. + apex_web_service.g_request_headers.delete; if i_content_type is not null then @@ -159,10 +161,13 @@ create or replace package body pck_net_storage as l_header_index := l_header_index + 1; */ - -- nur für BLOB (z.B. leerer Ordner) Content-Length setzen - if i_body_blob is not null + -- nur für leere BLOBs (z.B. leerer Ordner) Content-Length setzen + -- bei nicht leeren blob setzt apex_web_service.make_rest_request den content-length header automatisch, doppeltes setzen führt aber zu einem HTTP-400 API Fehler + -- bei leeren blobs (empty_blob()) wird er aber nicht automatisch gesetzt, daher müssen wir ihn manuell setzen + if i_body_blob is not null + and dbms_lob.getlength(i_body_blob) = 0 then - l_content_length := coalesce(dbms_lob.getlength(i_body_blob), 0); + l_content_length := 0; -- coalesce(dbms_lob.getlength(i_body_blob), 0); apex_web_service.g_request_headers(l_header_index).name := 'Content-Length'; apex_web_service.g_request_headers(l_header_index).value := l_content_length; l_header_index := l_header_index + 1; @@ -172,8 +177,8 @@ create or replace package body pck_net_storage as if i_body_clob is not null then - apex_debug.info('Clob Request Body used:'); - apex_debug.info(i_body_clob); + --apex_debug.info('Clob Request Body used:'); + --apex_debug.info(i_body_clob); l_response := apex_web_service.make_rest_request( p_url => i_url ,p_http_method => i_method @@ -182,7 +187,7 @@ create or replace package body pck_net_storage as ,p_wallet_path => pck_system.f_get_par_wert_by_programmid('NETSTORE_WALLET_PATH') ); else - apex_debug.info('BLOB Request Body used! Length: ' || dbms_lob.getlength(i_body_blob)); + --apex_debug.info('BLOB Request Body used! Length: ' || dbms_lob.getlength(i_body_blob)); l_response := apex_web_service.make_rest_request( p_url => i_url ,p_http_method => i_method @@ -545,13 +550,12 @@ create or replace package body pck_net_storage as raise_application_error(-20012, 'Object Key darf nicht mit / enden — zum Anlegen von Ordnern p_create_folder verwenden'); end if; - -- TEST - --l_response := f_make_request( - -- i_method => 'PUT' - -- ,i_url => f_build_url(i_object_key) - -- ,i_body_blob => i_content - -- ,i_content_type => i_content_type - --); + l_response := f_make_request( + i_method => 'PUT' + ,i_url => f_build_url(i_object_key) + ,i_body_blob => i_content + ,i_content_type => i_content_type + ); l_obj_path := f_split_object_key(i_object_key); pck_log.p_info(