垠迹信息科技 2016-03-15 07:56 采纳率: 57.1%
浏览 14040
已采纳

Java上传到fth时提示Connection closed without indication.

如题,自己在系统中直接上传的话是可以的,但用代码上传就不行了,代码是这样的
package cn.com.sensetech.ftp;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

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

public class Upload
{
/**

  • 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 uploadFile(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;
    }
    ftp.changeWorkingDirectory(path);
    ftp.storeFile(filename, input);

    input.close();
    ftp.logout();
    success = true;
    }
    catch (IOException e)
    {
    e.printStackTrace();
    }
    finally
    {
    if (ftp.isConnected())
    {
    try
    {
    ftp.disconnect();
    }
    catch (Exception e)
    {
    e.printStackTrace();
    }
    }
    }
    return success;
    }

    public static void main(String[] args)
    {
    try
    {
    String filepath = "D:/upload/liuqian.txt";
    FileInputStream in = new FileInputStream(new File(filepath));
    boolean flag = uploadFile("localhost", 21, "lq", "123", "D:/upload", "walmartDemo", in);
    System.out.println(flag);
    }
    catch (Exception e)
    {
    e.printStackTrace();
    }
    }
    }

提示出错信息
org.apache.commons.net.ftp.FTPConnectionClosedException: Connection closed without indication.
at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:317)
at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:294)
at org.apache.commons.net.ftp.FTP._connectAction_(FTP.java:400)
at org.apache.commons.net.ftp.FTPClient._connectAction_(FTPClient.java:924)
at org.apache.commons.net.SocketClient.connect(SocketClient.java:183)
at org.apache.commons.net.SocketClient.connect(SocketClient.java:203)
at cn.com.sensetech.ftp.Upload.uploadFile(Upload.java:30)
at cn.com.sensetech.ftp.Upload.main(Upload.java:105)
false

调试的时候发现错误出现在这里
finally
{
if (ftp.isConnected())
{
try
{
ftp.disconnect();
}
catch (Exception e)
{
e.printStackTrace();
}
}

这究竟是怎么回事啊,怎么修改才能够跑通,本人新手,求各位大师帮忙,感激不尽

  • 写回答

4条回答

  • 夜半无声 2016-03-15 09:12
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器