クロスボーダーは税関通関中のFTPファイルのアップロードとダウンロードを行います.

6717 ワード

税関通関の手順:
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セットで取得されます.ファイルのアップロードとダウンロードはすべて単一ファイルのためです.