最近一直在做一個工作流程的項目,終端使用者要求在發送訊息的時候可以附帶附件,這個又是給我的一個難題。
在網上查了一下ORACLE上傳資料,找到了黃建華前輩寫的《Oracle EBS Forms開發指南(中級)》的資料有關於附件開發的內容,真的是不得不佩服黃建華前輩的厲害啊。
言歸正傳,按照《Oracle EBS Forms開發指南(中級)》中的介紹就可以輕鬆的實現客戶化FORM添加附件的功能,好現在把上傳的功能實現了,要如何?已上傳的檔案在終端使用者想查看該附件的時候現在下來呢?這個又是給我的一個難題,這個問題也卡住了我好些天,不過當初我弄明白了當我上傳的檔案時存到了fnd_lobs表中以BLOB資料的形式儲存,現在要把BLOB資料以原檔案的格式讀取出來,並且給終端使用者提供下載該檔案的功能,在網上還真的找到這種方法,真的感謝前人共用他們的成果。
方法如下:
declare
v_file_id NUMBER;
url VARCHAR2(500);
begin
--Get the file_id of the file which you want to download in fnd_lobs
v_file_id := xxxxxx;
--Get The Download URL
url := fnd_gfm.construct_download_url(fnd_web_config.gfm_agent,v_file_id,TRUE);
fnd_utilities.open_url(url);
end;
以上的方法就可以輕鬆的實現下載儲存在fnd_lobs中的檔案,只要告訴fnd_gfm.construct_download_url在fnd_lobs表中檔案的file_id,就可以輕鬆取得URL,使用fnd_utilities.open_url就可以下載該檔案。不過現在還有一個問題就是要在工作流程發送的訊息找到一個東西(比如說一個按鈕、超連結)來執行下載檔案的方法,請教顧問也沒得到比較好的方法,無奈只好硬著頭夠嘗試,在多次嘗試之後找到了可以在document類型的ATTRIBUTE裡設定一個超連結,然後讓這個超連結的地址指向我已經取得的下載檔案的URL,問題終於得以解決。