Oracle EBS 文件上传和下载(一)-调用标准API功能

业务背景

在我之前发表的一篇文章《Oracle EBS使用CSV导入Oracle Form及BOM清单导入 API》提到上传导入数据的文件,同时也可以用于文件上传和下载。

Oracle EBS标准上传和下载

上传代码:

/**上传文件
返回值: 上传文件的标识:FND_LOBS.FILE_ID
*/
Function UploadFile Return Number Is
  l_AccessId      Number;
  l_ServerUrl     Varchar2(20000);
  l_Url           Varchar2(20000);
  l_ButtonChoice  Number;
  l_FileId        Number;
  l_OracleCharset Varchar2(30);
Begin
  --Get Process ID
  l_AccessId := Fnd_Gfm.authorize(Null);
  --Get Web Page
  Fnd_Profile.Get('APPS_WEB_AGENT', l_ServerUrl);

  l_Url := Rtrim(l_ServerUrl, '/') ||
           '/fnd_file_upload.displayGFMform?access_id=' ||
           To_Char(l_AccessId) || Chr(38) || 'l_server_url=' || l_ServerUrl;

  If (l_Url Is Null) Then
    Fnd_Message.Set_String('调用Url失败!');
    Fnd_Message.Show;
    Raise Form_Trigger_Failure;
  End If;
  --Open Web Page
  Fnd_Utilities.Open_Url(l_Url);
  Fnd_Message.Set_String('请选择在打开网页导入的文件,单击“是”按钮上传完毕! ');
  l_ButtonChoice := Fnd_Message.Question(button1     => 'Yes',
                                         button2     => null,
                                         button3     => 'No',
                                         default_btn => 1,
                                         cancel_btn  => 3,
                                         icon        => 'Question');
  --Get File ID
  l_FileId := Fnd_Gfm.Get_File_ID(l_AccessId);
  --获得客户端字符集
  If l_FileId Is Not Null And l_FileId <> 0 Then
    Select oracle_charset
      Into l_OracleCharset
      From FND_LOBS
     Where FILE_ID = l_FileId;
    :Parameter.CLIENTCHARSET := Substr(:Parameter.CLIENTCHARSET,
                                       1,
                                       Instr(:Parameter.CLIENTCHARSET, '.')) ||
                                l_OracleCharset;
  End If;
  --取消上传将要删除上传文件的记录
  If (l_ButtonChoice = 3) Then
    Begin
      Delete From FND_LOBS Where FILE_ID = l_FileId;
    Exception
      When No_Data_Found Then
        Null;
    End;
    l_FileId := 0;
    Forms_Ddl('commit');
  End If;
  Return l_FileId;
End;

其实,调用Oracle EBS标准API上传文件,被上传的文件保存在FND_LOBS表字段FILE_DATA中。

下载代码

参考代码如下:

DECLARE
  l_FileId      Number;
  l_DownloadUrl Varchar2(2000);
BEGIN
  --文件标识,来源于FND_LOBS.FILE_ID
  l_FileId := :CONTROL.FILE_ID;
  --获得下载URL
  l_DownloadUrl := fnd_gfm.construct_download_url(fnd_web_config.gfm_agent,
                                                  l_FileId,
                                                  TRUE);
  --下载文件                                                
  fnd_utilities.open_url(l_DownloadUrl);
END;

默认下载保存的文件名为:fnd_gfm.zip,需要自己行修改文件名称和文件类型。

优缺点:

优点
调用Oracle EBS标准功能编写代码工作量小,简单快捷。比较合适处理批量数据导入。
缺点
1.由于文件存放在Oracle EBS标准FND_LOBS表中,不合适上传数量多和单个大文件,比如:物料图片和技术图纸。
下载文件名称统一默认为fnd_gfm.zip,不便用户使用。

猜你喜欢

转载自blog.csdn.net/chenxianping/article/details/81166402
今日推荐