postMan测试向sftp服务器上传文件

从别的渠道传来的attachment附件 ,后端接口接收到参数后,base64解码成字节数组,这时候用I/O流的方式还原文件到本地目录,按需将文件加密,传输到sftp服务器,使用postman测试接口功能,

第一个问题:格式问题

        在win10环境下 文件目录是d:\a的格式 ,但是在bash环境下 识别不出来,要反斜杠 / 的格式

第二个问题cmd 不能运行openssl命令 

        需要打开git 的bash.exe的绝对路径,如d:\\git\\bin\\bash.exe  

第三个问题 密钥格式不对,不能加密

 我用openssl命令将某个文件加密  ,例如我用到了rsa密钥,不能直接用

先创建 OpenSSH 密钥文件的一个副本,以便可以转换副本而不影响原始密钥。

bash
複製程式碼
cp /c/Users/13467/.ssh/id_rsa /c/Users/13467/.ssh/id_rsa.pem
转换副本为 PEM 格式: 使用 ssh-keygen 将副本转换为 PEM 格式。

bash
複製程式碼
ssh-keygen -p -m PEM -f /c/Users/13467/.ssh/id_rsa.pem
这将把 id_rsa.pem 转换为 PEM 格式,但不会影响原始的 id_rsa 文件。

第四个问题  怎么把源文件发给后端接口呢?

        源文件是通过附件的格式传进来的,源文件被编码成base64位,传进来后解码,注意传进来是.pdf,解码的时侯先解成字节,然后创建的文件名也要是.pdf的后缀,这样文件流转换成xxx.pdf后可以正常打开

第五个问题:postman发送附件,怎么发送呢? 

  请看以下截图

第六个问题: 使用Java代码生成base64编码

    @Test
    public  void test(){
        try {

            String filePath = "abc.pdf";//文件的绝对路径
            // 读取文件到字节数组
            byte[] fileBytes = Files.readAllBytes(new File(filePath).toPath());

            // 使用 Base64 编码字节数组
            String base64Encoded = Base64.getEncoder().encodeToString(fileBytes);

            // 打印或使用 Base64 编码后的字符串
            System.out.println("Base64 Encoded String: ");
            System.out.println(base64Encoded);
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

第七个问题: 将文件打包后怎么传递到给定的文件服务器上呢?

         使用jsch 包操作sftp文件传输,首先要有主机名  端口号  用户名,然后是用户密码或者私钥,由于jsch 是先建立ssh通道,然后打开sftp通道,然后才能用put 或get上传或下载文件  ,在使用put前要(ChannelSftp) channel.cd("远程目录"),下载的时候可以先找到文件再下载 ,找文件可以

  Vector<ChannelSftp.LsEntry> fileList = sftp.ls(sftpRemotePath);

                   for (ChannelSftp.LsEntry entry : fileList) {
                       String fileName = entry.getFilename();

 先检查fileName的名称,用String 的indexOf() endWith() 等方法匹配特定文件名

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值