ftp上传程序(JAVA)

原创 2007年10月12日 15:59:00

一共有三个程序,两个JSP,一个JAVA

1,send.jsp 前台页面

<%@ page contentType="text/html;charset=gb2312"%>
<%@ page language="java" import="net.clore.db.*"%>
<%@ page import="java.util.*"%>  
<%@ include file="../incs/config.jsp"%>
<html>
<head>
<title>彩信发送--导入</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link rel="stylesheet" href="../images/style.css" type="text/css">
</head>
<body bgcolor="#FFFFFF" text="#000000" topmargin="0" leftmargin="0">
<table border="0" width="100%" id="table1" height="55">
 <tr>
  <td>&nbsp;
  <font color="red">当前位置: -&gt; </font><font color="#FF0000">发送彩信</font></td>
 </tr>
</table>
<div align="center">
 <table border="0" width="446" id="table2" cellspacing="0" cellpadding="0">
  <tr>
   <td background="../images/edit/edit-04.gif" height="18"></td>
  </tr>
  <tr>
   <td background="../images/edit/edit-02.gif" height="86">
   <div align="center">
    <table border="0" width="80%" id="table3" cellspacing="0" cellpadding="10">
     <tr>
      <td>
      <div align="center">
<font size="3">
<b>方法一:导入彩信文件</b></font></div>
      <div align="center">
<hr noshade size="1"></div>
 
 <!-- 文件上传 -->    
<form name="Form1" enctype="multipart/form-data" method="post" action="send_x.jsp">
 <p>请选择要导入的文件: <input type="file" name="file1" size="30" maxlength="30"></p>
 <p><input type="file" name="file2" size="30" maxlength="30"></p>
 <p>请选择图片大小<br>
 <select name="filesize">
        <option value="1" >128 x 128</option>
        <option value="2" >100 x 100</option>  
        <option value="3" >96 x 96</option>
        <option value="4" >80 x 80</option>
    </select>
    </p>
 <!-- <p>文件名:<br><input type="text" name="filename" value="" size="30" maxlength="30"></p>  -->
 <p> <input type="submit" class="myButton" value=" 上传 " onClick="this.disabled"> <input type="reset" class="myButton" value="清除"> </p>
</form>
      <p>注意:导入的文件大小不要超过20M。</td>
     </tr>
    </table>
   </div>
   </td>
  </tr>
 </table>
<p>
 <table border="0" width="446" id="table2" cellspacing="0" cellpadding="0">
  <tr>
   <td background="../images/edit/edit-04.gif" height="18"></td>
  </tr>
  <tr>
   <td background="../images/edit/edit-02.gif" height="86">
   <div align="center">
    <table border="0" width="80%" id="table3" cellspacing="0" cellpadding="10">
     <tr>
      <td>
      <div align="center">
<font size="3">
<b>方法二:手动输入彩信内容</b></font></div>
      <div align="center">
<hr noshade size="1"></div>
<form name="main" enctype="multipart/form-data" method="post" action="send_x.jsp">
    <table cellspacing="5">
     <tr>
      <td align="left" valign="top" nowrap>文件名:</td>
      <td><input type="text" name="filename" maxlength="30"></td>
        <tr>
          <td align="right" valign="top" nowrap>短信内容:</br></br>
          <td align="left" valign="top"><textarea name="cont" cols="40" rows="6" class="myInput"></textarea></td>
        </tr>
 </table>
<p> <input type="submit" class="myButton" value=" 上传 " onClick="this.disabled"> <input type="reset" class="myButton" value="清除"> </p>
</form>
      <p>短信内容不能为空。</td>
     </tr>
    </table>
   </div>
   </td>
  </tr>
  <tr>
   <td background="../images/edit/edit-03.gif" height="18"> </td>
  </tr>
 </table>
</div>
<script language="javascript">
</script>
</body>
</html>
<%out.flush();%> 

2,send_x.jsp

<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.util.*"%>
<%@ page import="java.io.*"%>
<%@ page import="net.clore.ftpserver.ApacheFtpClient"%>
<%@ include file="../incs/config.jsp"%>
<%@ page import="java.io.*"%>
<%@ page import="com.oreilly.servlet.MultipartRequest"%>
<%@ page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy"%>
<%
   String filename = "";
            String saveDirectory = "/var/www/resin-www/temp/ftptest/client/";
            String destDirectory = "/var/www/resin-www/temp/ftptest/server/";
            String s_ip = "192.168.1.231";
            String s_user = "sms-www";
            String s_password = "sjb2005";
            //最大上传5M
            int maxPostSize = 5 * 1024 * 1024;
            // 产一个新的MultipartRequest 的物件,multi
            if (!request.getMethod().equals("POST"))
                return;
   
            MultipartRequest multi = new MultipartRequest(request,
                    saveDirectory, maxPostSize, "iso-8859-1",
                    new DefaultFileRenamePolicy());
         String filesize = multi.getParameter("filesize");
            String cont = multi.getParameter("cont");
           
            ApacheFtpClient ftp = new ApacheFtpClient();
            ftp.connectFtpServer(s_ip, s_user, s_password);
            TreeMap map = new TreeMap();
            if (cont != null) {        //第二种方式
             filename = multi.getParameter("filename")+".txt";
                FileWriter filewrite = new FileWriter(saveDirectory + filename );
                filewrite.write(cont);
                filewrite.close();
                map.put(saveDirectory + filename, destDirectory);
                ftp.transferAllFiles(map);
            } else {                  //第一种方式
                Enumeration filesname = multi.getFileNames();
                while (filesname.hasMoreElements()) {
                 map = new TreeMap();
                    String name = (String) filesname.nextElement();
                    filename = multi.getFilesystemName(name);
                    //文件名可能为空,即当用户只上传一个文件时
                    if(filename!=null){
                     if(filename.endsWith("gif")){  //图片
                      ftp.transferPhoto(saveDirectory + filename,filesize);
                     }else{                         //文件
                      map.put(saveDirectory + filename, destDirectory);
                      ftp.transferAllFiles(map);
                     }
                 }
                }
            }
            %>
<html>
 <head>
  <title>彩信发送</title>
  <link rel="stylesheet" href="../images/style.css" _fcksavedurl=""../images/style.css"" type="text/css">
  <meta http-equiv="Content-Type" content="text/html; charset=GBK">
  <meta http-equiv="refresh" content="3;url=send.jsp">
 </head>
 <body leftmargin="0" topmargin="0">
  <table width="100%" height="54" border="0" cellpadding="0" cellspacing="0" background="../images/online_tit.gif">
   <tr>
    <td>
     &nbsp;&nbsp; <font color="red">彩信发送 -&gt; 发送结果</font>
    </td>
   </tr>
  </table>
  <table width="<%=cfgTableWidth%>" border="0" align="center">
   <tr>
    <td align="center">
     彩信发送成功(3秒后自动返回)
    </td>
   </tr>
   <tr>
    <td align="center">
     <a href="send.jsp"><%=sCaptionBack%></a>
    </td>
   </tr>
  </table>
  <table width="446" border="0" align="center" cellpadding="0" cellspacing="0">
   <tr>
    <br>
   </tr>
   <tr>
    <br>
    <div align="center">
     <table width="76%" cellspacing="5">
      <tr>
       <td colspan="2" align="left">
        <%//取得所有上传之档案输入形态名称
        %>
       </td>
      </tr>
     </table>
    </div>
   </tr>
   <tr>

3,ApacheFtpClient.java

package net.clore.ftpserver;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.*;
import javax.imageio.ImageIO;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTP;

public class ApacheFtpClient extends TimerTask {

    public static final int INTERVAL = 30000;

    private boolean flag = false;

    private String filename = "";

    private static FTPClient ftpTool = null;

    // totalTime为空闲时间,当totalTime超过2分钟时,程序主动断开与ftp服务器的连接
    private static int totalTime = 0;
    static {
        Timer time = new Timer();
        time.schedule(new ApacheFtpClient(), new Date(), 30000);
    }

    // 连接到ftp server
    public void connectFtpServer(String s_ip, String s_user, String s_password) {
        try {
            if (ftpTool == null || !ftpTool.isConnected()) {
                System.out.println("prepare to connect!");
                ftpTool = new FTPClient();
                ftpTool.connect(s_ip);
                ftpTool.login(s_user, s_password);
                ftpTool.setFileType(FTP.BINARY_FILE_TYPE);
                ftpTool.enterLocalActiveMode();
                // 35秒超时
                ftpTool.setSoTimeout(35000);
                System.out.println("login succ!");
                totalTime = 0;
            } else {
                if (ftpTool == null)
                    System.out.println("ftpTool is null ");
                if (ftpTool.isConnected())
                    System.out.println("ftp is connect "
                            + ftpTool.isConnected());
            }
        } catch (Exception e) {
            System.out.println("can not login ftp server");
            e.printStackTrace();
        }
    }

    // 断开与ftp server的连接
    public void disconnFtpServer() {
        try {
            ftpTool.logout();
            ftpTool.disconnect();
            totalTime = 0;
            System.out.println("disconn succ!");
        } catch (Exception e) {
            System.out.println(e);
        } finally {
            ftpTool = null;
        }
    }

    /*
     * 执行由参数指定的ftp传输任务。 传输任务的格式为TreeMap(本地全路径文件名, 远程文件名)
     */
    public void transferAllFiles(TreeMap filesTransferInfoObj) throws Exception {
        Iterator itor = filesTransferInfoObj.entrySet().iterator();
        while (itor.hasNext()) {
            Map.Entry e = (Map.Entry) itor.next();
            String s_localFileName = e.getKey().toString();
            String s_destDirectory = e.getValue().toString();
            filename = s_localFileName.substring(s_localFileName
                    .lastIndexOf("/") + 1);// 取得文件名
            try {
                ftpTool.changeWorkingDirectory(s_destDirectory);
                ftpTool.storeFile(filename, new BufferedInputStream(
                        new FileInputStream(s_localFileName)));
                totalTime = 0;
                System.out.println(filename + " tranfer finished");
            } catch (Exception ex) {
                System.out.println("/t     failed.   |   " + ex);
            }
        }
    }

    /*
     * 图片处理 
     * @param srcImageFile 图片的源路径
     * @param scale 图片尺寸
     */
    public void transferPhoto(String srcImageFile, String scale) {
        int size = 0;
        TreeMap map = new TreeMap();
        map.put(srcImageFile, srcImageFile);
        if (scale.equals("1")) {
            size = 128;
        } else if (scale.equals("2")) {
            size = 100;
        } else if (scale.equals("3")) {
            size = 96;
        } else {
            size = 80;
        }
        try {
            BufferedImage src = ImageIO.read(new File(srcImageFile)); // 读入文件
            int width = src.getWidth(); // 得到源图宽
            int height = src.getHeight(); // 得到源图长
            width = size;
            height = size;
            Image image = src.getScaledInstance(width, height,
                    Image.SCALE_DEFAULT);
            BufferedImage tag = new BufferedImage(width, height,
                    BufferedImage.TYPE_INT_RGB);
            Graphics g = tag.getGraphics();
            g.drawImage(image, 0, 0, null); // 绘制缩小后的图
            g.dispose();
            ImageIO.write(tag, "JPEG", new File(srcImageFile));// 输出到文件流
            map.put(srcImageFile, "/var/www/resin-www/temp/ftptest/server");
            //使用transferAllFiles方法上传图片
            this.transferAllFiles(map);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void run() {
        try {
            if (ftpTool != null && ftpTool.isConnected()) {
                if (flag == false) {
                    flag = true;
                }
                // 累加
                totalTime += INTERVAL;
                // 如果totalTime超过2分钟就断开ftp连接
                if (totalTime >= 120000) {
                    this.disconnFtpServer();
                    totalTime = 0;
                } else {
                    // 发送noop命令以保持连接
                    ftpTool.noop();
                    System.out.println("is Connected " + ftpTool.isConnected());
                }
                System.out.println(totalTime);
            } else if (flag) {
                flag = false;
                System.out.println("no connection");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

JAVA中使用FTPClient实现文件上传下载

在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件、下载文件,本文简单介绍如何利用jakarta commons中的FTPClient(在 commons-net包中)实现...
  • hj7jay
  • hj7jay
  • 2016年04月06日 09:06
  • 2843

Java 上传文件到ftp服务器

前两篇文章我们搭建了一个ftp服务器,并对服务器进行了相应的配置,这篇文章我们来说一下我们如何上传文件。          先介绍一下项目,本项目采用的是spring mvc +spring +my...
  • zhanghongjie0302
  • zhanghongjie0302
  • 2016年02月26日 15:30
  • 24922

利用ftp多线程上传文件

使用apache commons-net-3.3 首先我们需要有一个ftp服务器。 直接上代码 package com.ourpalm.resupgrade.util.ftp; import j...
  • maosijunzi
  • maosijunzi
  • 2015年01月09日 15:54
  • 10419

java FTP批量上传图片

在准备FTP上传之前,ftp的
  • oQiDai123456
  • oQiDai123456
  • 2014年09月13日 09:40
  • 1681

Java 上传文件到ftp服务器

原文链接  前两篇文章我们搭建了一个ftp服务器,并对服务器进行了相应的配置,这篇文章我们来说一下我们如何上传文件。          先介绍一下项目,本项目采用的是spring mv...
  • a214919447
  • a214919447
  • 2017年01月20日 09:04
  • 1201

Java实现FTP文件上传

原文链接:http://www.phpxs.com/code/1002228/ import org.apache.commons.io.IOUtils; import org.apac...
  • liuxiangke0210
  • liuxiangke0210
  • 2017年03月29日 19:05
  • 1046

java实现ftp上传下载

代码如下 import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; ...
  • wenzhilanyu2012
  • wenzhilanyu2012
  • 2015年06月18日 21:17
  • 2188

java实现把文件上传至ftp服务器

用java实现ftp文件上传。我使用的是commons-net-1.4.1.zip。其中包含了众多的java网络编程的工具包。 1 把commons-net-1.4.1.jar包加载到项目工程中去。...
  • atomcrazy
  • atomcrazy
  • 2013年05月18日 11:04
  • 10093

java实现ftp上传下载(jdk1.7以上)

java实现ftp上传下载(jdk1.7以上) 网上有很多关于java实现ftp的上传与下载,但都是jdk1.7以下的,最近在做java实现ftp文件上传与下在,搜到的代码不是jdk1.7一下的,就是...
  • Paulangsky
  • Paulangsky
  • 2015年12月22日 09:10
  • 2756

java ftp 上传下载

实现FTP文件上传与下载可以通过以下两种种方式实现(不知道还有没有其他方式,),分别为:1、通过JDK自带的API实现;2、通过Apache提供的API是实现。 第一种方式 [java] ...
  • u014201191
  • u014201191
  • 2015年04月19日 20:23
  • 969
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ftp上传程序(JAVA)
举报原因:
原因补充:

(最多只允许输入30个字)