教程plsql利用与附件.pdfVIP

  • 0
  • 0
  • 约3.16千字
  • 约 3页
  • 2025-06-27 发布于四川
  • 举报

PLSQL 利用FTP与SFTP上传和下载附件

简介:在附件接口同步以及客户化邮件系统中,获取请求的输出文件并将文件从应用

服务器中下载获取出来,然后上传到数据库服务器中,如果应用服务器与数据库服务器在同

一台服务器上,那当然简单粗暴直接用utl_file的方法,若应用服务器与数据库服务器不在

同一服务器上,若应用服务器还不只一台的话,那就要获取当前节点名称并去当前节点下取

文件。

1.利用ftp上传下载:

共享文件服务器,如果用户对文件的操作安全要求不高,会开启FTP来实现主机间的文

件操作,默认端口为21。

实现方式

使用Oracle内置程序包utl_tcp来实现通过FTP协议操作服务器文件。

官方提供了ftp程序,需要到官网下载,主要是对utl_tcp进行了封装,简化了程序的调

用。登陆到ebs数据库编译ftp.pck即可。

测试脚本

在做测试之前,要将host添加到acl中

DECLARE

l_return_statusVARCHAR2(240);

l_msg_dataVARCHAR2(240);

v_source_fileVARCHAR2(240):=

/u01/dev/app/fs_ne/inst/DEV_bjs0-t50/logs/appl/conc/out/CUXEAMEQUIPK

PI_557992_1.PDF;

v_dest_dirVARCHAR2(240);

v_new_nameVARCHAR2(240):=557992_CUXEAMEQUIPKPI.PDF;

g_report_out_dirVARCHAR2(50):=WRITE_MAIL_DIR;

g_db_mail_file_dirVARCHAR2(30):=MAIL_FILE_DIR;--邮件发送文件主

l_connutl_tcp.connection;

BEGIN

BEGIN

l_return_status:=fnd_api.g_ret_sts_success;

--建立连接

l_conn:=ftp.login(99,21,appldev,

appldev);

dbms_output.put_line(l_conn!);

ftp.binary(l_conn);

--APP-DB

ftp.get(p_conn=l_conn,

p_from_file=v_source_file,

p_to_dir=g_db_mail_file_dir,

p_to_file=v_new_name);

dbms_output.put_line(ftp.get!);

ftp.logout(l_conn);

EXCEPTION

WHENOTHERSTHEN

l_return_status:=fnd_api.g_ret_sts_unexp_error;

l_msg_data:=SQLERRM;

END;

dbms_output.put_line(l_return_status:||l_return_status);

dbms_output.put_line(l_msg_data:||l_msg_data);

END;

2.利用sftp上传下载:

SFTP传输方式使用了加密/解密技术,所以使用起来是非常安全的,不过传输效率会比

FTP要低。默认端口为22。

实现方法

使用JavaSource实现SFTP操作服务器文件。采用JSCHJavaLibrary,JSCH是用java实现

SSH功能的库。并且客户化包调用JSCH库实现文件操作(这里是借鉴付朋同事的方

文档评论(0)

1亿VIP精品文档

相关文档