`
xiangqian0505
  • 浏览: 321668 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

将文件上传ftp服务器

    博客分类:
  • java
阅读更多
//工具类
package com.fz.common.util;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;

public class FileUtil {
 
 /**
  * 
  * @date Sep 26, 2011 10:17:39 AM 
  * @return
  * @author zhangh
  */
 public static DataInputStream getInput(){
  DataInputStream d = null;
  try {
   d = new DataInputStream(new FileInputStream("c:/wmc.dat"));
   return d;
  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return d;
 }
 /**
  * 
  * @date Sep 26, 2011 10:17:44 AM 
  * @param whites
  * @return
  * @author zhangh
  */
 public static boolean creatWhiteManageFile(byte[] whites,String file) {
  DataOutputStream d;
  try {
   d = new DataOutputStream(new FileOutputStream(file));
   d.write(whites);
   d.flush();
  } catch (Exception e) {
   // TODO Auto-generated catch block
   return false;
//   e.printStackTrace();
  }
  return true;
 }
 /**
  * 
  * @date Sep 16, 2011 4:39:22 PM 
  * @param url
  * @param username
  * @param password
  * @param path
  * @param filename
  * @param input
  * @return
  * @author zhangh
  */
 public static boolean uploadFile(String url,  String username,
   String password, String path, String filename, InputStream input) {
  boolean success = false;
  FTPClient ftp = new FTPClient();
  try {
   int reply;
   ftp.connect(url);
//   ftp.connect(url, port);// 连接FTP服务器
   // 如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
   ftp.login(username, password);// 登录
   reply = ftp.getReplyCode();
   if (!FTPReply.isPositiveCompletion(reply)) {
    ftp.disconnect();
    return success;
   }
   ftp.changeWorkingDirectory(path);
   ftp.storeFile(filename, input);
   ftp.logout();
   input.close();
   success = true;
  } catch (IOException e) {
   e.printStackTrace();
  } finally {
   if (ftp.isConnected()) {
    try {
     ftp.disconnect();
    } catch (IOException ioe) {
    }
   }
  }
  return success;
 }
 
 /**
  * 
  * 方法名称:uploadFileFtp
  * 方法描述:黑名名单,黑用户文件上传ftp服务器
  * @param url
  * @param username
  * @param password
  * @param path
  * @param filename
  * @param input
  * @param input2
  * @return
  * boolean
  * version 1.0 
  * author  wuxq
  * Oct 26, 2011 3:19:09 PM
  */
 public static boolean uploadFileFtp(String url, String username,
   String password, String path, String filename, InputStream input,
   InputStream input2) {
  Date date = new Date();
  SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  String time = formatter.format(date);
  boolean success = false;
  FTPClient ftp = new FTPClient();
  try {
   int reply;
   ftp.connect(url);
   ftp.login(username, password);// 登录
   reply = ftp.getReplyCode();
   if (!FTPReply.isPositiveCompletion(reply)) {
    ftp.disconnect();
    return success;
   }
   ftp.changeWorkingDirectory(path);
   ftp.storeFile(filename, input);
   ftp.storeFile(filename + time, input2);
   ftp.logout();
   input.close();
   success = true;
  } catch (IOException e) {
   e.printStackTrace();
  } finally {
   if (ftp.isConnected()) {
    try {
     ftp.disconnect();
    } catch (IOException ioe) {
    }
   }
  }
  return success;
 }

}

 

//读取配置文件
package com.fz.fzbike.domain;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import org.apache.log4j.Logger;

import com.eNets.framework.util.SysConstants;

/**
 * 获取ftp服务器信息的bean类
 * 
 * @author wuxq
 * 
 */
public class SysConstats {
 private static Logger log = Logger.getLogger(SysConstats.class);
 public static String FTPSERVER;// ftp服务器ip地址
 public static String FTPUSERNAME;// ftp服务器用户名
 public static String FTPPASSWORD;// ftp服务器用户密码
 public static String ENVELOPERESULTROOT;// 存放ftp服务器的路径

 public SysConstats() {
  try {
   InputStream in = new BufferedInputStream(new FileInputStream(
     SysConstants.PUBLIC_PATH.substring(0,
       SysConstants.PUBLIC_PATH.length() - 7)
       + "/bidfileconfig.properties"));
   Properties prop = new Properties();
   prop.load(in);
   SysConstats.FTPSERVER = prop.getProperty("ftpServer", "none");
   SysConstats.FTPUSERNAME = prop.getProperty("ftpUserName", "none");
   SysConstats.FTPPASSWORD = prop.getProperty("ftpPassword", "none");
   SysConstats.ENVELOPERESULTROOT = prop.getProperty(
     "envelopeResultRoot", "none");
   log.debug("读取ftp配置信息成功!");
  } catch (IOException e) {
   log.debug("读取ftp配置信息失败!");
   e.printStackTrace();
  }
 }

 public static String getFTPSERVER() {
  return FTPSERVER;
 }

 public static void setFTPSERVER(String ftpserver) {
  FTPSERVER = ftpserver;
 }

 public static String getFTPUSERNAME() {
  return FTPUSERNAME;
 }

 public static void setFTPUSERNAME(String ftpusername) {
  FTPUSERNAME = ftpusername;
 }

 public static String getFTPPASSWORD() {
  return FTPPASSWORD;
 }

 public static void setFTPPASSWORD(String ftppassword) {
  FTPPASSWORD = ftppassword;
 }

 public static String getENVELOPERESULTROOT() {
  return ENVELOPERESULTROOT;
 }

 public static void setENVELOPERESULTROOT(String enveloperesultroot) {
  ENVELOPERESULTROOT = enveloperesultroot;
 }

 public static void main(String args[]) {
  new SysConstats();
 }

}

 

//将文件上传ftp

package com.fz.fzbike.biz;

import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.text.DecimalFormat;

import com.eNets.basesys.user.vo.UserVO;
import com.eNets.framework.assemble.RequestHashNew;
import com.eNets.framework.database.DBConnection;
import com.fz.common.util.FileUtil;
import com.fz.fzbike.common.StringUtil;
import com.fz.fzbike.domain.SysConstats;

/**
 * 上传卡内码到ftp服务器 生成bat文件
 * 
 * @author wuxq 2011-09-28
 */
public class UploadCardInNoFtpAction {
 /**
  * 
  * 方法名称:uploadFtp 方法描述:上传文件到ftp
  * 
  * @param reh
  *            void version 1.0 author wuxq Sep 28, 2011 10:38:38 AM
  */
 public void uploadFtp(RequestHashNew reh) {
  String cardType = reh.get("cardType").toString();
  DBConnection dbc = reh.getDBC();// 链接数据库
  dbc.endTran();
  // 判断是否是空值 空有可能是挂失,退出挂失, 退出黑名单, 根据卡id得到卡类型
  if (StringUtil.isNull(cardType)) {
   String cardtypesql = "select ci.card_type from lc_t_card_info ci where ci.card_id="
     + reh.get("SELECTEDID");
   cardType = dbc.getList0(cardtypesql);
  }
  String top = "c:/upload/";
  String file = top + "bmc.dat"; // 定义一个目录存放临时的黑名单bat文件
  String whiteFile = top + "wmc.dat";// 定义一个目录存放临时的白名单bat文件
  String buserfile = top + "buser.dat"; // 定义一个目录存放临时的黑用户文件
  String fileID = dbc.setOracleGlideValue("LC_T_UPGRADE_FILE");// 得到文件表的序列号
  // 得到当前用户的ID
  UserVO userVo = reh.getUserVO();
  String UserID = userVo.getUserID();

  DecimalFormat df = new DecimalFormat("0.0");

  if (cardType.equals("7")) {
   StringBuffer bf = new StringBuffer(1024);
   bf
     .append(
       "select distinct card_in_no from(select tc.card_in_no")
     .append(
       " from lc_t_blacklist tb left join lc_t_card_info tc")
     .append(
       " on tb.card_id = tc.card_id where tc.card_type = 7")
     .append(" and tb.whether_effective = 1 union all select")
     .append(" tc.card_in_no from lc_t_card_loss cl left join")
     .append(
       " lc_t_card_info tc on cl.card_id=tc.card_id where tc.card_type = 7 and")
     .append(" cl.whether_effective=1) t order by t.card_in_no");// 黑名单及挂失记录表中所有的管理员记录
   StringBuffer bffer = new StringBuffer(1024);

   bffer
     .append("select ti.card_in_no from lc_t_card_info ti")
     .append(
       " where ti.card_type=7 and ti.card_make_status=2 order by ti.card_in_no");// 卡信息表中所有的管理员记录
   // 定义一个数组来接收黑名单中排序好的管理员卡内码
   String arr[][] = dbc.getArr(bf.toString());
   // 定义一个数组来接收卡信息表中排序好的管理员卡内码
   String listarr[][] = dbc.getArr(bffer.toString());

   upload_f(arr, file);

   // 得到黑名单bat文件的版本号, 初始值为1.0
   String vesionSql = "select file_vesion from(select row_number() over(ORDER BY t.file_vesion DESC) num,"
     + "t.file_vesion from lc_t_upgrade_file t where t.file_type=2) where num=1";
   String vesion = dbc.getList0(vesionSql);

   double ve = 1.0;// 定义黑名单版本编号变量,初始值为1.0
   /*
    * 数据库中存在旧版本则在版本增加0.1
    */
   if (StringUtil.isNotNull(vesion)) {
    ve = (Double.parseDouble(vesion) + 0.1);
   }
   vesion = df.format(ve);
   // 版本记录sql语句
   String bmcsql = "insert into lc_t_upgrade_file values(" + fileID
     + ",'" + file + "','" + vesion + "','2',sysdate," + UserID
     + ")";
   dbc.insertDB(bmcsql);// 持久化到数据库

   upload_f(listarr, whiteFile);

   // 得到白名单bat文件的版本号, 初始值为1.0
   String vesionSql2 = "select file_vesion from(select row_number() over(ORDER BY t.file_vesion DESC) num,"
     + "t.file_vesion from lc_t_upgrade_file t where t.file_type=5) where num=1";
   String vesion2 = dbc.getList0(vesionSql2);

   double ve2 = 1.0;// 定义白名单版本编号变量,初始值为1.0
   /*
    * 数据库中存在旧版本则在版本增加0.1
    */
   if (StringUtil.isNotNull(vesion2)) {
    ve2 = (Double.parseDouble(vesion2) + 0.1);
   }
   String bfileID = dbc.setOracleGlideValue("LC_T_UPGRADE_FILE");// 得到文件表的序列号
   vesion2 = df.format(ve2);
   // 版本记录sql语句
   String bmcsql2 = "insert into lc_t_upgrade_file values(" + bfileID
     + ",'" + whiteFile + "','" + vesion2 + "','5',sysdate,"
     + UserID + ")";
   dbc.insertDB(bmcsql2);// 持久化到数据库
  } else {
   StringBuffer bf2 = new StringBuffer(1024);
   bf2
     .append(
       "select distinct card_in_no from (select tc.card_in_no")
     .append(
       " from lc_t_blacklist tb left join lc_t_card_info tc")
     .append(
       " on tb.card_id = tc.card_id where tc.card_type <> 7")
     .append(" and tb.whether_effective = 1 union all select")
     .append(" tc.card_in_no from lc_t_card_loss cl left join")
     .append(" lc_t_card_info tc on cl.card_id = tc.card_id")
     .append(" where tc.card_type <> 7 and cl.whether_effective")
     .append(" = 1) t order by t.card_in_no");// 黑名单表及挂失用户表中所有非管理员记录
   // 定义一个数组来接收黑用户中排序好的用户卡内码
   String arr2[][] = dbc.getArr(bf2.toString());

   upload_f(arr2, buserfile);

   // 得到黑用户bat文件的版本号, 初始值为1.0
   String huserSql = "select file_vesion from(select row_number() over(ORDER BY t.file_vesion DESC) num,"
     + "t.file_vesion from lc_t_upgrade_file t where t.file_type=4) where num=1";
   String vesion3 = dbc.getList0(huserSql);

   double ves = 1.0;// 定义黑用户版本编号变量,初始值为1.0
   /*
    * 数据库中存在旧版本则在版本增加0.1
    */
   if (StringUtil.isNotNull(vesion3)) {
    ves = (Double.parseDouble(vesion3) + 0.1);
   }
   vesion3 = df.format(ves);
   // 版本记录sql语句
   String husersql = "insert into lc_t_upgrade_file values(" + fileID
     + ",'" + buserfile + "','" + vesion3 + "','4',sysdate,"
     + UserID + ")";
   dbc.insertDB(husersql);// 持久化到数据库
  }
 }

 /**
  * 
  * 方法名称:writeLong 方法描述:向输出流中写长整型
  * 
  * @param input
  * @return byte[] version 1.0 author wuxq Sep 28, 2011 10:54:58 AM
  */

 public static byte[] writeLong(long input) {
  ByteArrayOutputStream baos = new ByteArrayOutputStream();
  DataOutputStream os = new DataOutputStream(baos);
  try {
   os.writeLong(Long.reverseBytes(input));
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  byte[] b = baos.toByteArray();
  return b;
 }

 /**
  * 
  * 方法名称:upload_f 方法描述:把文件上传到ftp服务器
  * 
  * @param arr
  * @param file
  *            void version 1.0 author wuxq Oct 8, 2011 11:37:27 AM
  */
 public static void upload_f(String[][] arr, String file) {
  byte by[] = null;
  byte[] result = new byte[1];
  if (StringUtil.isNotNull(arr)) {
   result = new byte[arr.length * 4];
   int position = 0;
   for (int i = 0; i < arr.length; i++) {
    by = writeLong(Long.parseLong(arr[i][0]));
    byte list[] = new byte[4];
    for (int h = 0; h < list.length; h++) {
     list[h] = by[h];
    }
    for (int g = position; g < position + 4; g++) {
     result[g] = list[g - 4 * i];

    }
    position = position + 4;
   }
  }
  boolean bool = FileUtil.creatWhiteManageFile(result, file);// 创建一个bat文件
  if (bool) {
   // InputStreamReader isr = new InputStreamReader(new
   // FileInputStream(file));
   InputStream inp = null;
   InputStream inp2 = null;
   try {
    inp = new BufferedInputStream(new FileInputStream(file));
    inp2 = new BufferedInputStream(new FileInputStream(file));

   } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   // 截取文件名
   String f = file.substring(10, file.length());
   // 获取ftp配置信息
   SysConstats sc = new SysConstats();
   FileUtil.uploadFileFtp(sc.FTPSERVER, sc.FTPUSERNAME,
     sc.FTPPASSWORD, sc.ENVELOPERESULTROOT, f, inp, inp2);
  }

 }
}

 

分享到:
评论

相关推荐

    使用前端插件上传文件到ftp服务器

    在现代Web应用中,前端开发人员经常需要处理文件上传功能,以便用户能够将数据发送到服务器。本教程将深入探讨如何使用前端插件实现文件上传到FTP(File Transfer Protocol)服务器的过程,这是一个广泛用于文件传输...

    c# 实现文件FTP上传服务器

    c# 实现文件FTP上传至服务器  WebClient上传文件至服务器(不带进度条)    要上传的文件(全路径格式)  &lt;param name="strUrlDirPath"&gt;Web服务器文件夹路径  &lt;returns&gt;True/False是否上传成功&lt;/returns&gt;

    文件自动上传FTP服务器的设计与实现(设计+源码)-kaic.rar

    文件自动上传FTP服务器的设计与实现 文件自动上传FTP服务器的设计与实现 文件自动上传FTP服务器的设计与实现 文件自动上传FTP服务器的设计与实现 文件自动上传FTP服务器的设计与实现 文件自动上传FTP服务器的设计与...

    上传本地文件夹的文件到FTP服务器指定目录

    本项目聚焦于如何将本地文件夹中的文件上传到FTP服务器的特定目录,这在网站更新、数据迁移或备份场景中尤其有用。我们将探讨相关的知识点,并提供一些基础的实现方法。 1. FTP基本概念:FTP是一种基于TCP的应用层...

    linux下调用Shell实现文件上传ftp服务器

    - `put`: 将本地文件上传到FTP服务器。 - `close`: 断开与FTP服务器的连接。 #### 3. 代码解析 根据提供的代码示例,我们可以看到整个过程分为以下几个步骤: - **初始化变量**:定义了多个字符数组来存储服务器...

    java中生成xml文件,并上传至ftp服务器

    JAVA中生成xml文件到指定路径和上传到ftp服务器到指定路径的方法。

    VC写的上传文件到FTP服务器的OCX控件,网页可调用

    总的来说,这个"VC写的上传文件到FTP服务器的OCX控件"是一个强大的工具,它将复杂的FTP文件上传功能集成到了一个可嵌入网页的组件中,为开发者提供了便捷的文件上传解决方案。通过学习和使用这个控件,我们可以更好...

    oracle数据库自动备份上传至FTP服务器

    "oracle数据库自动备份上传至FTP服务器" Oracle 数据库自动备份上传至 FTP 服务器是指通过 Shell 脚本来实现对 Oracle 数据库的自动备份,并将备份文件上传至 FTP 服务器上,以防服务器出现故障,导致数据库无法...

    FTP服务器单文件绿色版FTPServer

    FTP服务器是一种用于在互联网上进行文件传输的服务,它允许用户从一台计算机(客户端)向另一台计算机(服务器)上传或下载文件。FTP(File Transfer Protocol)是这项服务的基础协议,它是一个标准网络协议,用于在...

    springboot以FTP方式上传文件到远程服务器

    Spring Boot 提供了强大的支持来实现文件上传,下面我们将一步步介绍如何使用 Spring Boot 实现 FTP 方式上传文件到远程服务器。 标题:Spring Boot 使用 FTP 方式上传文件到远程服务器 描述:主要介绍了 Spring ...

    java上传文件至FTP服务器

    Apache commons-net 上传文件至FTP服务器

    使用QT实现文件上传和下载----ftp服务器

    在本文中,我们将深入探讨如何使用QT库来实现文件的上传和下载功能,特别是与FTP服务器的交互。QT是一个跨平台的应用程序开发框架,广泛应用于C++编程,它提供了丰富的功能,包括网络通信,使得我们可以方便地构建...

    上传文件到ftp服务器

    2. `上传文件`:此函数接收本地文件路径和远程服务器上的目标文件名,然后将本地文件上传至FTP服务器。 3. `上传文件夹`:此函数用于递归上传整个文件夹,可能会有额外的选项来控制是否覆盖已存在的文件。 4. `暂停...

    基于ftp服务器,csv文件转换格式的文件上传下载实例

    在这个基于FTP服务器的CSV文件转换格式的文件上传下载实例中,我们将探讨如何利用FTP(File Transfer Protocol)服务进行文件的交互,以及如何处理CSV(Comma Separated Values)文件格式转换。FTP是一种标准网络...

    Linux搭建FTP服务器实现匿名上传.doc

    这将上传名为 example.txt 的文件到 FTP 服务器的 incoming 目录中。 需要注意的是,默认情况下,匿名用户只能上传文件,而不能删除文件。这是因为 FTP 服务器的安全机制为了防止恶意攻击。只有超级用户和文件的...

    xml上传FTP服务器.zip

    在读取操作中,`FTPClient.retrieveFile()`方法用于从服务器下载文件,而写入操作则需要用到`FTPClient.storeFile()`方法,它可以将本地文件上传到服务器。在进行这些操作之前,可能需要设置文件传输模式(ASCII或二...

    java大文件上传至ftp服务器带进度条显示的

    总的来说,实现Java大文件上传至FTP服务器并显示同步进度条涉及的关键技术点包括:FTPClient的使用、文件的分块上传、多线程同步、GUI组件的更新以及异常处理。通过合理设计和优化,可以实现高效且用户体验良好的大...

    springboot以FTP方式上传文件到远程服务器的流程

    在本文中,我们将介绍如何使用 Spring Boot 实现 FTP 上传文件到远程服务器的流程。这个流程包括如何使用 JWT 登录认证及鉴权的流程,以及如何使用 Spring Security 实现动态数据验证及权限分配。 一、环境准备工作...

    一个单文件绿色且功能强大的FTP服务器

    FTP服务器允许远程用户连接到本地计算机,上传或下载文件。在这个场景下,"ftpserv.exe"就是这个FTP服务器的主程序。用户只需双击运行,服务器即启动,无需复杂的配置过程。这种绿色软件的优势在于,它可以随时随地...

    Labview FTP上传文件

    Labview将读取本地文件并将其内容发送到FTP服务器。 5. **错误处理**:在Labview中,所有的操作都应包括适当的错误处理。对于FTP操作,可能遇到的错误包括网络连接问题、权限问题、文件不存在等。通过使用错误结构...

Global site tag (gtag.js) - Google Analytics