JavaBean实现多文件上传的两种方法(2/2)

JavaBean实现多文件上传的两种方法(2)


http://www.sina.com.cn 2005年01月12日 14:53 天极yesky

  文/无线空间

  2、采用FTP协议实现多个文件的上传

  FTP协议是Internet上用来传送文件的协议,规定了Internet上文件互相传送的标准。在java中实现这一功能是借助FtpClient类完成的。具体实现过程:首先与FTP服务器建立连接;初始化文件的传输方式,包括ASCII和BINARY两种方式;将文件输出到文件输入流FileInputStream中;FileInputStream中的数据读入字节数组中;字节数组中的数据写入输出流TelnetOutputStream(利用write方法将数据写入到一个网络链接上)。这样和源文件同名的一个文件就复制到了服务器端。本例的JavaBean中通过connectServer()、upload()和closeConnect()三个方法完成文件上传过程。主要实现如下:

public class ftpUpload
{
 String filename;String filename1;FtpClient ftpClient;
 public void connectServer(string server,string user,string password,string path)
 {
  //server:FTP服务器的IP地址;user:登录FTP服务器的用户名
  //password:登录FTP服务器的用户名的口令;path:FTP服务器上的路径
  try{
   ftpClient=new FtpClient();
   ftpClient.openServer(server);
   ftpClient.login(user, password);
   System.out.println("login success!");
   if (path.length()!=0) ftpClient.cd(path);
   ftpClient.binary();
  }catch (IOException ex)
  {
   System.out.println(ex);
  }
 }
 public void closeConnect()
 {
  try{
   ftpClient.closeServer();
  }catch (IOException ex) {System.out.println(ex);}
 }
 public void upload()
 {
  filename1=findFileName(filename);
  //从filename中分析出文件的名称,作为目标文件的名称,具体方法实现未给出
  try {
   TelnetOutputStream os=ftpClient.put(filename1);
   java.io.File file_in=new java.io.File(filename);
   FileInputStream is=new FileInputStream(file_in);
   byte[] bytes=new byte[1024];
   int c;
   while ((c=is.read(bytes))!=-1){ os.write(bytes,0,c); }
   is.close(); os.close();
  } catch (IOException ex) {System.out.println(ex);}
 }
}

  connectServer()完成与FTP服务器建立连接的功能,使用FtpClient的openServer(string server)方法打开远程FTP服务器,然后使用FtpClient的login(user, password)方法登录服务器。登录远程FTP服务器有两种方式,一种是注册用户登录,另一种是以匿名方式登录。前者要求用户首先注册为服务器的客户,服务器会给客户一个登录账号和密码,依据账号和密码连结到服务器上。后者要求用户不用注册而使用特殊的用户名"annoymous"和"guest"有限制的访问远程主机的公开文件,现在许多系统要求用户将Email地址作为口令。出于安全的目的,大部分匿名FTP主机一般只允许远程用户下载文件,而不允许上传,这将依赖于FTP服务器的设置。用户可根据实际情况选择使用两种方式。登录完成后使用FtpClient的binary()方法初始化传输方式为字节方式。upload()完成文件的上传功能。创建源文件的文件输入流FileInputStream,将输入流写入到字节数组中,利用TelnetOutputStream的write方法将字节数组中的数据写入到一个网络链接上。由于TelnetOutputStream打开的是FTP服务器上的一个文件,所以数据写入到了目标文件中,这样就完成了文件上传。closeConnect()要求与服务器断开连接。

  以上只是单个文件上传的过程,如果是多个文件可以多次调用此上传过程。由以上两种方式我们可以看出采用FTP协议实现多个文件的上传比较简单,容易实现。利用FTP协议上传文件一般是编写的客户端的程序,服务器端的安全设置会比较复杂;而利用HTTP协议上传文件则是服务器端的应用程序,相对来说安全设置会比较简单。并且通过测试发现FTP上传方式在传输大文件时速度是HTTP上传方式的几十倍甚至几百倍,但在传输小于1M的文件时却比HTTP上传方式稍慢一些。所以说两种传输方式各有优势,请读者根据自身情况量力而行。如果有什么问题或者是需要其他部分的源码,请与我联系!

转载于:https://www.cnblogs.com/ctfzh/archive/2007/07/09/811396.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值