zoukankan      html  css  js  c++  java
  • SFTP上传下载

    1、导入jar包 ora-sftp-1.4.jar

    2、编译package和执行sql文件   cux_1_pm_sftp_util.pck, ORA_SFTP_FILE.sql

    3、上传文件

    /*===============================================
      *   PROCEDURE NAME:
      *       Upload_Sftp
      *
      *   DESCRIPTION:
      *       上传sftp
      *   HISTORY:
      *     1.00   2020-07-02   wang.chen   Creation
      * ==============================================*/
      PROCEDURE Upload_Sftp(p_Org_Id      IN NUMBER --公司ID
                           ,p_Doc_Name    IN VARCHAR2 --文件名称
                           ,p_Blob        IN BLOB --文件BLOB
                           ,x_Ret_Status  OUT VARCHAR2 --成功返回S
                           ,x_Ret_Message OUT VARCHAR2 --错误信息
                            ) IS
        l_Connection_Id   NUMBER;
        l_File_Name       VARCHAR2(240);
        l_File_Path       VARCHAR2(240);
        l_File_Path1      VARCHAR2(240);
        l_Upload_Path     VARCHAR2(240);
        l_File_Exists     NUMBER;
        l_Downloaded_File BLOB;
      BEGIN
        --初始化  
        x_Ret_Status  := Fnd_Api.g_Ret_Sts_Success;
        x_Ret_Message := NULL;
      
        --连接文件服务器
        BEGIN
          l_Connection_Id := Cux_1_Pm_Sftp_Util.Connect_Host('101.01.197.411'
                                                            ,22
                                                            ,'123456'
                                                            ,'111111');
        EXCEPTION
          WHEN OTHERS THEN
            l_Connection_Id := NULL;
            x_Ret_Status    := Fnd_Api.g_Ret_Sts_Error;
            x_Ret_Message   := x_Ret_Message || SQLERRM;
            RETURN;
        END;
      
        l_File_Path  := '/pmsfiles/test/upload/b01/' || p_Org_Id || '/' ||
                        p_Doc_Name;
        l_File_Path1 := '/pmsfiles/test/upload/b01/' || p_Org_Id || '/';
        --验证文件是否存在
        BEGIN
          IF Cux_1_Pm_Sftp_Util.Exists(l_Connection_Id
                                      ,l_File_Path1) THEN
            NULL;
          ELSE
            --若文件不存在则创建目录文件
            Cux_1_Pm_Sftp_Util.Create_Dir(l_Connection_Id
                                         ,l_File_Path1);
          END IF;
        EXCEPTION
          WHEN OTHERS THEN
            x_Ret_Status  := Fnd_Api.g_Ret_Sts_Error;
            x_Ret_Message := x_Ret_Message || SQLERRM;
            RETURN;
        END;
      
        --上传
        BEGIN
          Cux_1_Pm_Sftp_Util.Upload(l_Connection_Id
                                   ,p_Blob
                                   ,l_File_Path);
        EXCEPTION
          WHEN OTHERS THEN
            x_Ret_Status  := Fnd_Api.g_Ret_Sts_Error;
            x_Ret_Message := x_Ret_Message || SQLERRM;
            RETURN;
        END;
      
        Ora_Sftp.Disconnect_Host(l_Connection_Id);
      
      EXCEPTION
        WHEN OTHERS THEN
          x_Ret_Status  := Fnd_Api.g_Ret_Sts_Error;
          x_Ret_Message := x_Ret_Message || SQLERRM;
      END Upload_Sftp;

    4、下载文件

     /*===============================================
      *   PROCEDURE NAME:
      *       Download_Sftp
      *   DESCRIPTION:
      *       下载sftp
      *   HISTORY:
      *     1.00   2020-07-01   wang.chen   Creation
      * ==============================================*/
      PROCEDURE Download_Sftp(p_File_Id     IN NUMBER --文件id
                             ,x_Blob        OUT BLOB --文件BLOB
                             ,x_Ret_Status  OUT VARCHAR2 --成功返回S
                             ,x_Ret_Message OUT VARCHAR2 --错误信息
                              ) IS
      
        l_Connection_Id   NUMBER;
        l_File_Name       VARCHAR2(240);
        l_File_Path       VARCHAR2(240);
        l_Upload_Path     VARCHAR2(240);
        l_File_Exists     NUMBER;
        l_Downloaded_File BLOB;
      BEGIN
        --初始化  
        x_Ret_Status  := Fnd_Api.g_Ret_Sts_Success;
        x_Ret_Message := NULL;
      
        --连接文件服务器
        BEGIN
          l_Connection_Id := Cux_1_Pm_Sftp_Util.Connect_Host('101.01.197.411'
                                                            ,22
                                                            ,'123456'
                                                            ,'111111');
        EXCEPTION
          WHEN OTHERS THEN
            l_Connection_Id := NULL;
            x_Ret_Status    := Fnd_Api.g_Ret_Sts_Error;
            x_Ret_Message   := x_Ret_Message || SQLERRM;
            RETURN;
        END;
      
        --根据文件id获取文件名称,文件路径
        BEGIN
          SELECT f.File_Name
                ,f.Upload_Path
            INTO l_File_Name
                ,l_Upload_Path
            FROM Cux_1_Pm_Upload_Files f
           WHERE 1 = 1
             AND f.File_Id = p_File_Id;
        EXCEPTION
          WHEN OTHERS THEN
            l_File_Name   := NULL;
            l_Upload_Path := NULL;
            x_Ret_Status  := Fnd_Api.g_Ret_Sts_Error;
            x_Ret_Message := x_Ret_Message || '根据文件id找不到文件名称和目录!';
            RETURN;
        END;
      
        l_File_Path := l_Upload_Path || l_File_Name;
        --验证文件是否存在
        BEGIN
          IF Cux_1_Pm_Sftp_Util.Exists(l_Connection_Id
                                      ,l_File_Path) THEN
            NULL;
          ELSE
            x_Ret_Status  := Fnd_Api.g_Ret_Sts_Error;
            x_Ret_Message := x_Ret_Message || '文件服务器下文件不存在!';
            RETURN;
          END IF;
        EXCEPTION
          WHEN OTHERS THEN
            x_Ret_Status  := Fnd_Api.g_Ret_Sts_Error;
            x_Ret_Message := x_Ret_Message || SQLERRM;
            RETURN;
        END;
      
        --下载
        BEGIN
          l_Downloaded_File := Cux_1_Pm_Sftp_Util.Download(l_Connection_Id
                                                          ,l_File_Path);
          IF (l_Downloaded_File IS NULL) THEN
            x_Ret_Status  := Fnd_Api.g_Ret_Sts_Error;
            x_Ret_Message := x_Ret_Message || '下载的文件为空';
            RETURN;
          END IF;
        EXCEPTION
          WHEN OTHERS THEN
            x_Ret_Status  := Fnd_Api.g_Ret_Sts_Error;
            x_Ret_Message := x_Ret_Message || SQLERRM;
            RETURN;
        END;
      
        x_Blob := l_Downloaded_File;
      
        Cux_1_Pm_Sftp_Util.Disconnect_Host(l_Connection_Id);
      
      EXCEPTION
        WHEN OTHERS THEN
          x_Ret_Status  := Fnd_Api.g_Ret_Sts_Error;
          x_Ret_Message := x_Ret_Message || SQLERRM;
      END Download_Sftp;
  • 相关阅读:
    CodeIgniter框架对数据库查询结果进行统计
    PHP的内存回收(GC)
    使用ajax请求后端程序时,关于目标程序路径问题
    JavaScript中的各种X,Y,Width,Height
    Qt编写气体安全管理系统7-设备监控
    Qt编写气体安全管理系统6-地图监控
    Qt编写气体安全管理系统5-数据监控
    Qt编写气体安全管理系统4-通信协议
    Qt编写气体安全管理系统3-用户模块
    Qt编写气体安全管理系统2-界面框架
  • 原文地址:https://www.cnblogs.com/wang-chen/p/13224421.html
Copyright © 2011-2022 走看看