问题描述
嗨,
我正在使用PLSQL UTL_HTTP包调用REST web服务,在JSON中,没有问题。
然而,现在我需要调用一个WS,但附加一个文件。
我可以在 “表单数据” 模式下与邮递员一起做。
在PLSQL中,我在请求的正文中尝试了同样的事情:
因为这是Postman使用的语法。WS执行,但返回带有错误标记。
我也尝试过使用这个 (代码snipet),但结果是一样的,它执行,但结果不是它应该是什么:
任何帮助将不胜感激。
罗德里戈·库蒂尼奥
葡萄牙
我正在使用PLSQL UTL_HTTP包调用REST web服务,在JSON中,没有问题。
然而,现在我需要调用一个WS,但附加一个文件。
我可以在 “表单数据” 模式下与邮递员一起做。
在PLSQL中,我在请求的正文中尝试了同样的事情:
{ "file":"/C:Users/myuser/Desktop/image_01.jpg" }复制
因为这是Postman使用的语法。WS执行,但返回带有错误标记。
我也尝试过使用这个 (代码snipet),但结果是一样的,它执行,但结果不是它应该是什么:
DECLARE l_buffer RAW(32767); l_amount INTEGER := 32767; l_pos INTEGER := 1; l_blob_len PLS_INTEGER; BEGIN /* p_file is the file to upload as a BLOB parameter */ IF p_file IS NOT NULL THEN BEGIN l_blob_len := dbms_lob.getlength(p_file); utl_http.set_header(v_req, 'Content-Type', 'application/octet-stream'); -- v_req is a parameter utl_http.set_header(v_req, 'Content-Length', l_blob_len); WHILE l_pos < l_blob_len LOOP dbms_lob.read(p_file, l_amount, l_pos, l_buffer); utl_http.write_raw(v_req, l_buffer); l_pos := l_pos + l_amount; END LOOP; EXCEPTION WHEN OTHERS THEN p_err := SQLCODE; p_msg := 'ERROR: ' || SQLERRM; END; END IF; END;复制
任何帮助将不胜感激。
罗德里戈·库蒂尼奥
葡萄牙
专家解答
我认为:
应该是你机器上的一个位置吗?
如果是这样,则无法使用PL/SQL读取它。该文件必须存在于数据库服务器可访问的位置中。
我不确定你到底在做什么,但你可能需要做一些事情:
-将文件复制到数据库服务器
-使用UTL_file读取它
-使用UTL_HTTP将其附加到REST请求
如果这是最终用户将上传文件的过程...你需要重新考虑你的策略。
/C:Users/myuser/Desktop/image_01.jpg复制
应该是你机器上的一个位置吗?
如果是这样,则无法使用PL/SQL读取它。该文件必须存在于数据库服务器可访问的位置中。
我不确定你到底在做什么,但你可能需要做一些事情:
-将文件复制到数据库服务器
-使用UTL_file读取它
-使用UTL_HTTP将其附加到REST请求
如果这是最终用户将上传文件的过程...你需要重新考虑你的策略。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。