跨境电商在海关报关中 FTP 文件的上传和下载

海关报关步骤:

1、跨境电商中,海关报关中报关文件的上传和下载通过 FTP 的形式执行。

2、跨境电商中每笔订单都是需要报关,将订单的相关参数生成 xml 格式的文件,g根据海关加密报关需求,将文件加密。

3、根据海关提供的 FTP 地址,将加密后的文件上传到相应的 FTP 文件夹。

4、报关文件上传成功完成之后,一般在 10 分钟之内,不管报关成功与否,都会生成相应的响应文件。

5、最后服务端可以将相应的响应文件下载下来,通过解密,就可以看到报关的具体情况了。

现在就说说报关文件在 FTP 中上传下载的具体代码实现:


1)、FTP 的相关参数配置文件 test.properties

#报关文件所在的目录
dirpath = /Users/**/Code/ftp/test/
#移动文件所在的目录
ultimatepath = /Users/**/Code/ftp/tests/

#下载FTP文件
downloadpath = /Users/**/Code/ftp/download/

#ftp  所在的IP 、账号 、密码 、端口 、目录
ip = 10.1.2.100
username = ZYD
password = ZYD
port = 2312
path = /


2)、上传报关文件

public class FTPUtil {

      /**
       * 连接ftp服务器
       *
       * @param url
       * @param port
       * @param username
       * @param password
       * @return FtpClient
       * @throws FtpProtocolException
       * @throws IOException
       */
      public FtpClient connectFTP(String url, int port, String username, String password) { // 创建ftp

        FtpClient ftp = null;
        try {
          // 创建地址
          SocketAddress addr = new InetSocketAddress(url, port);
          // 连接
          ftp = FtpClient.create();
          ftp.connect(addr);
          // 登陆
          ftp.login(username, password.toCharArray());
          ftp.setBinaryType();
          System.out.println(ftp.getWelcomeMsg());
        } catch (FtpProtocolException e) {
          e.printStackTrace();
        } catch (IOException e) {
          e.printStackTrace();
        }
        return ftp;
      }

      /**
       * 切换目录
       *
       * @param ftp
       * @param path
       */
      public void changeDirectory(FtpClient ftp, String path) {
        try {
          ftp.changeDirectory(path);
          System.out.println(ftp.getWorkingDirectory());
        } catch (FtpProtocolException e) {
          e.printStackTrace();
        } catch (IOException e) {
          e.printStackTrace();
        }
      }

      /**
       * 关闭ftp
       *
       * @param ftp
       */
      public void disconnectFTP(FtpClient ftp) {
        try {
          ftp.close();
          System.out.println("disconnect success!!");
        } catch (IOException e) {
          e.printStackTrace();
        }
      }

      /**
       * 上传文件
       *
       * @param localFile
       * @param ftpFile
       * @param ftp
       */
      public void upload(File localFile, String ftpFile, FtpClient ftp, String filename, Map<String,String> map) {
        OutputStream os = null;
        FileInputStream fis = null;
        FileOutputStream fos = null;
        String path = map.get("ultimatepath");
        String filepath = path+filename;
        try {
        File destFile = new File(filepath);
        fos = new FileOutputStream(destFile);

          // 将ftp文件加入输出流中。输出到ftp上
          os = ftp.putFileStream(ftpFile);
          //File file = new File(localFile);
          File file = localFile;
          // 创建一个缓冲区
          fis = new FileInputStream(file);
          byte[] bytes = new byte[1024];
          int c;
          while ((c = fis.read(bytes)) != -1) {
            os.write(bytes, 0, c);
            fos.write(bytes, 0, c);
          }
          System.out.println("upload success!!");
        } catch (FtpProtocolException e) {
          e.printStackTrace();
        } catch (IOException e) {
          e.printStackTrace();
        } finally {
          try {
            if (os != null)
              os.close();
               fos.close();
            if (fis != null)
              fis.close();
          } catch (IOException e) {
            e.printStackTrace();
          }
        }
      }

      /**
       * 文件下载
       *
       * @param localFile
       * @param ftpFile
       * @param ftp
       */
      public void download(String localFile, String ftpFile, FtpClient ftp) {
        InputStream is = null;
        FileOutputStream fos = null;
        try {
          // 获取ftp上的文件
          is = ftp.getFileStream(ftpFile);
          File file = new File(localFile);
          byte[] bytes = new byte[1024];
          int i;
          fos = new FileOutputStream(file);
          while ((i = is.read(bytes)) != -1) {
            fos.write(bytes, 0, i);
          }
          System.out.println("download success!!");
        } catch (FtpProtocolException e) {
          e.printStackTrace();
        } catch (IOException e) {
          e.printStackTrace();
        } finally {
          try {
            if (fos != null)
              fos.close();
            if (is != null) {
              is.close();
            }
          } catch (IOException e) {
            e.printStackTrace();
          }
        }
      }

      public static String testTransform(File  rootpath, String filename , Map<String,String> map) {
        FTPUtil ftpUtil = new FTPUtil();
        String ip = map.get("ip");
        int port = Integer.parseInt(map.get("port"));
        String username = map.get("username");
        String password = map.get("password");
        String path = map.get("path");
        // 连接ftp
        FtpClient ftp = ftpUtil.connectFTP(ip, port, username, password);
        // 切换目录
        ftpUtil.changeDirectory(ftp, path);
        //上传报关文件
        System.out.println("-----start transform----");
        ftpUtil.upload(rootpath, "/UPLOAD/" + filename + "", ftp, filename, map);
        return "success";
        //下载报关响应文件
        // System.out.println("-----start downloading----");
        // ftpUtil.download(map.get("downloadpath"), "/test_upload.xlm", ftp);
      }
       
 

3)、代码中的配置数据都是通过 map 集合获取的。文件的上传和下载都是针对单个文件。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
跨境电商实务PDF是一本关于跨境电商实际操作的电子书,内容涵盖了跨境电商的各个方面,包括供应链管理、市场营销、物流运输和海关进口出口等内容。 供应链管理是跨境电商的核心,它涉及到产品采购、库存管理、订单处理和售后服务,通过合理的供应链管理可以提高效率和降低成本。 市场营销是跨境电商的重要组成部分,它包括市场调研、产品定位、品牌推广和电子商务平台选型等内容,有效的市场营销可以吸引更多的客户并提高销售额。 物流运输是跨境电商不可忽视的环节,它涉及到货物运输、仓储管理和关务申报等内容,合理的物流运输方案可以保证货物的准时到达和安全性。 海关进口出口是跨境电商的关键环节,它涉及到海关规章制度、报关报检和税费缴纳等内容,了解海关进口出口的政策和规定可以避免相关问题和纠纷。 通过阅读跨境电商实务PDF,可以了解跨境电商运营的各个方面,并提供实际操作的指导和经验分享。这本电子书适合有意从事跨境电商的人士、跨境电商从业者以及对跨境电商感兴趣的人阅读。它可以帮助读者更好地理解跨境电商运营的流程和规则,提高工作效率和减少风险。 综上所述,跨境电商实务PDF是一本实用的电子书,它涵盖了跨境电商运营的各个方面,适合对跨境电商感兴趣的读者阅读。通过阅读该书,读者可以了解跨境电商的实际操作经验和实用技巧,提高工作效率和成功率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值