java web FTPClient实现上传文件到指定服务器

FPClient 实现上传文件到指定服务器,供大家参考,具体内容如下

调用

 FileInputStream in=new FileInputStream(new File(fileUrl));
 moveFile("10.3.3.**", 21, "username", "password", path, filename, in);

方法

/**
  * Description: 向FTP服务器上传文件
  * @param url FTP服务器hostname
  * @param port FTP服务器端口
  * @param username FTP登录账号
  * @param password FTP登录密码
  * @param path FTP服务器保存目录
  * @param filename 上传到FTP服务器上的文件名
  * @param input 输入流
  * @return 成功返回true,否则返回false
  */ 

public static boolean moveFile(String url,int port,String username, String password, String path, String filename, InputStream input) {
  boolean success = false;
  FTPClient ftp = new FTPClient();
  try {
   int reply;
   ftp.connect(url, port);//连接FTP服务器
   //如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
   ftp.login(username, password);//登录
   reply = ftp.getReplyCode();
   if (!FTPReply.isPositiveCompletion(reply)) {
    ftp.disconnect();
    return success;
   }
   //创建路径
   try{
    ftp.makeDirectory(path);
   }catch(Exception e){
       }
   ftp.enterLocalPassiveMode();
   ftp.changeWorkingDirectory(path);
   boolean f= ftp.storeFile(filename, input);
   logger.error(f);
   input.close();
   ftp.logout();
   success = true;
  } catch (IOException e) {
   e.printStackTrace();
  } finally {
   if (ftp.isConnected()) {
    try {
     ftp.disconnect();
    } catch (IOException ioe) {
    }
   }
  }
  return success; }

一些细节

FileInputStream.available()返回的实际可读字节数,也就是总大小。

FTPClient.storeFile()方法时,就停止在那里,什么反应都没有,出现假死状态。
解决方法: 调用FTPClient.enterLocalPassiveMode()
原 理: 因为ftp server可能每次开启不同的端口来传输数据,但是在linux上或者其他服务器上面,由于安全限制,可能某些端口没有开启,所以就出现阻塞

FTP默认端口为21 SSH为22 实际传输端口为20

查看指定端口,例21
netstat -na|grep 21(端口号)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Java使用SFTP上传文件到服务器的简单使用

    最近用到SFTP上传文件查找了一些资料后自己做了一点总结,方便以后的查询.具体代码如下所示: /** * 将文件上传到服务器 * * @param filePath * 文件路径 * @param channelSftp * channelSftp对象 * @return */ public static boolean uploadFile(String filePath, ChannelSftp channelSftp) { OutputStream outstream = null; In

  • Java原生服务器接收上传文件 不使用MultipartFile类

    由于工作中 使用 MultipartFile 与现有的一些上传文件组件冲突 所以使用其他的接收上传文件的方法. 首先我把 MultipartFile 类的配置文件注释掉. <!-- <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaul

  • Java上传文件到服务器端的方法

    Web文件上传采用POST的方式,与POST提交表单不同的是,上传文件需要设置FORM的enctype属性为multipart/form-data.由于上传的文件会比较大,因此需要设置该参数指定浏览器使用二进制上传.如果不设置,enctype属性默认为application/x-www-form-urlencoded,使用浏览器将使用ASCII向服务器发送数据,导致发送文件失败. 上传文件要使用文件域(<input type='file'/>,并把FORM的Enctype设置为multipar

  • Java实现上传文件图片到指定服务器目录

    具体代码如下所示: ***web.xml*** <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xm

  • Java实现ftp上传下载、删除文件及在ftp服务器上传文件夹的方法

    一个JAVA 实现FTP功能的代码,包括了服务器的设置模块,并包括有上传文件至FTP的通用方法.下载文件的通用方法以及删除文件.在ftp服务器上传文件夹.检测文件夹是否存在等,里面的有些代码对编写JAVA文件上传或许有参考价值,Java FTP主文件代码: package ftpDemo; import java.io.DataOutputStream; import java.io.InputStream; import java.io.OutputStream; import sun.net

  • Java实现跨服务器上传文件功能

    前几天做个项目,本身客户端和管理员端是写在一起的,共用一台服务器,客户上传的文件都是存在服务器的硬盘上的.老龙提出要把客户端和管理员端分离,这时候用户上传的附件的存储就出现问题了.显然,把大到几百M的apk文件存到数据库不现实,查了半天,在两端建立ftp服务器传文件是最快的方法. 具体流程是,用户登录外网客户端,上传文件到外网的服务器硬盘上,在此同时,文件通过外网服务器访问内网管理员服务器的ftp服务器,传到内网服务器的硬盘上.这样内网服务器可以对上传的文件进行加密签名工作,之后也通过ftp的方

  • java实现上传文件到服务器和客户端

    JAVA编写一个可以上传文件的服务器和客户端,具体内容如下 服务端 class Server { public static void main(String[] args) throws Exception { //建立服务端Socket ServerSocket ss = new ServerSocket(10005); //接收客户端Socket Socket fileLoaderSocket = ss.accept(); //打印连接信息 String ip = fileLoaderSo

  • java使用SFTP上传文件到资源服务器

    本文实例为大家分享了java实现SFTP上传文件到资源服务器工具类,供大家参考,具体内容如下 首先得创建连接sftp服务器的公共类MySftp.java: package cn.test.util; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.text.SimpleDateFormat; import java.util.Date; import

  • Java远程连接Linux服务器并执行命令及上传文件功能

    最近再开发中遇到需要将文件上传到Linux服务器上,至此整理代码笔记. 此种连接方法中有考虑到并发问题,在进行创建FTP连接的时候将每一个连接对象存放至 ThreadLocal<Ftp> 中以确保每个线程之间对FTP的打开与关闭互不影响. package com.test.utils; import java.io.BufferedInputStream; import java.io.File; import java.io.FileFilter; import java.io.FileIn

  • Java上传文件图片到服务器的方法

    这里我记录一个比较简单方便操作的JAVA上传文件图片到服务器并且保存,具体内容如下 首先是页面html的   我这是提交一个文件和类型 <div style="border: 1px solid red;"> 我是添加一张临时图片得到微信的media_id保存数据库! <form action="xxxxxxxxm" enctype="multipart/form-data" method="post">

随机推荐