您可以尝试以下代码,我希望它也适用于您的情况.

该代码使用Apache Commons vsf2通过安全ftp连接(SFTP)上传文件

try {

String filepath = "";

String serverAddress = "";

String userId = "";

String password = "";

String remoteDirectory = "";

String keyPath = "";

String passPhrase = "";

File file = new File(filepath);

if (!file.exists())

throw new RuntimeException("Error. File not found");

//Initializes the file manager

StandardFileSystemManager manager = new StandardFileSystemManager();

manager.init();

//Setup our SFTP configuration

FileSystemOptions opts = new FileSystemOptions();

SftpFileSystemConfigBuilder.getInstance().setStrictHostKeyChecking(opts, "no");

SftpFileSystemConfigBuilder.getInstance().setUserDirIsRoot(opts, true);

SftpFileSystemConfigBuilder.getInstance().setTimeout(opts, 10000);

// Create local file object

FileObject localFile = manager.resolveFile(file.getAbsolutePath());

// Create remote file object

FileObject remoteFile = manager.resolveFile(createConnectionString(serverAddress, userId, password, keyPath, passPhrase, fileToFTP), createDefaultOptions(keyPath, passPhrase));

// Copy local file to sftp server

remoteFile.copyFrom(localFile, Selectors.SELECT_SELF);

System.out.println("File upload successful");

}

catch (Exception ex) {

ex.printStackTrace();

return false;

}

finally {

manager.close();

}

编辑

在理解了FTPS背后的逻辑和@ riyaz-ali的帖子并将您的评论中的链接引用到this article之后

Apache FTP客户端存在问题,它不支持TLS会话恢复.您可以修补Apache Commons Library的现有实现.

您可以尝试以下代码步骤来使其工作:

>在项目中添加以下修补的类. (此类扩展了Apache commons中给出的补丁中现有的FTPS实现)

import java.io.IOException;

import java.lang.reflect.Field;

import java.lang.reflect.Method;

import java.net.Socket;

import java.util.Locale;

import javax.net.ssl.SSLSession;

import javax.net.ssl.SSLSessionContext;

import javax.net.ssl.SSLSocket;

import org.apache.commons.net.ftp.FTPSClient;

import com.google.common.base.Throwables;

public class PatchedFTPSClient extends FTPSClient {

@Override

protected void _prepareDataSocket_(final Socket socket) throws IOException {

if(socket instanceof SSLSocket) {

final SSLSession session = ((SSLSocket) _socket_).getSession();

final SSLSessionContext context = session.getSessionContext();

try {

final Field sessionHostPortCache = context.getClass().getDeclaredField("sessionHostPortCache");

sessionHostPortCache.setAccessible(true);

final Object cache = sessionHostPortCache.get(context);

final Method method = cache.getClass().getDeclaredMethod("put", Object.class, Object.class);

method.setAccessible(true);

final String key = String.format("%s:%s", socket.getInetAddress().getHostName(),

String.valueOf(socket.getPort())).toLowerCase(Locale.ROOT);

method.invoke(cache, key, session);

} catch(Exception e) {

throw Throwables.propagate(e);

}

}

}

}

>使用此修改后的代码段.

TransferImagenesFTP.ftpClient = new PatchedFTPSClient();

TransferImagenesFTP.ftpClient.connect(InetAddress.getByName"), 26);

TransferImagenesFTP.ftpClient.login("", "");

TransferImagenesFTP.ftpClient.execPBSZ(0);

TransferImagenesFTP.ftpClient.execPROT("P");

TransferImagenesFTP.ftpClient.enterLocalPassiveMode();

//Now use the FTP client to upload the file as usual.

希望这对您有用,并将解决您的问题.

java ftps上传_java – 使用FTPS将文件从android传输到服务器相关推荐

  1. java 分块上传_Java 文件分块上传客户端和服务器端源代码

    本博客介绍如何进行文件的分块上传.本文侧重介绍客户端,服务器端请参考博客<Java 文件分块上传服务器端源代码>.建议读者朋友在阅读本文代码前先了解一下 MIME 协议. 所谓分块上传并非 ...

  2. java 断点上传_java HTTP文件断点上传

    之前仿造uploadify写了一个HTML5版的文件上传插件,没看过的朋友可以点此先看一下~得到了不少朋友的好评,我自己也用在了项目中,不论是用户头像上传,还是各种媒体文件的上传,以及各种个性的业务需 ...

  3. android java服务器文件传输_java – 使用FTPS将文件从android传输到服务器

    您可以尝试以下代码,我希望它也适用于您的情况. 该代码使用Apache Commons vsf2通过安全ftp连接(SFTP)上传文件 try { String filepath = "&q ...

  4. java http 上传_Java使用HttpURLConnection上传文件

    从普通Web页面上传文件非常easy.仅仅须要在form标签叫上enctype="multipart/form-data"就可以,剩余工作便都交给浏览器去完毕数据收集并发送Http ...

  5. java 图片上传_java web图片上传和文件上传实例

    本篇文章主要介绍了java web图片上传和文件上传实例,具有一定的参考价值,有需要的可以了解一下. 图片上传和文件上传本质上是一样的,图片本身也是文件.文件上传就是将图片上传到服务器,方式虽然有很多 ...

  6. java 图片分段上传_java实现分段读取文件并通过HTTP上传的方法

    本文实例讲述了java实现分段读取文件并通过HTTP上传的方法.分享给大家供大家参考.具体如下: 1.首先将文件分段,用RandomAccessFile 2.分段后将分出的内容上传到http URL ...

  7. java cropper 上传_java web 网站头像上传处理 (springmvc +bootstrap+cropper)

    制作头像上传.请根据您的实际需求,修改代码,不完全正确,仅供参考! 前端页面设计使用bootstrap ,头像预览和剪裁工具使用cropper 后台使用springmvc. 现在来看前端的页面设计 前 ...

  8. java 客户端上传_java实现上传文件到服务器和客户端

    JAVA编写一个可以上传文件的服务器和客户端,具体内容如下 服务端 class Server { public static void main(String[] args) throws Excep ...

  9. java视频上传_Java上传视频实例代码

    页面: 上传文件时的关键词:enctype="multipart/form-data" String path = request.getContextPath(); String ...

  10. java断点续传上传_java断点续传上传文件,突然关闭然后再上传文件为什么不是从之前上传的进度上传...

    Controller层里这么写的 @Controller public class UploadAction { @Autowired private File_Service FileSerivce ...

最新文章

  1. 【翻译】Ext JS 6 Beta发布
  2. 溃不成军:科通芯城一度再跌近30% 股价三天腰斩
  3. Uber的一键式聊天智能回复系统
  4. ios-UIButton-常用方法
  5. css rem 大屏开发_px/em/rem的区别与应用
  6. 利用hibernate中的SchemaExport生成数据表
  7. python简单的编程_简单的Python2.7编程初学经验总结
  8. --------》》》》【醒目】一些比较有用的东西
  9. spark写出分布式的训练算法_Spark0.9分布式运行MLlib的线性回归算法
  10. yaw公式_3D 视角旋转矩阵 yaw pitch roll (pan, tilt)的数学计算
  11. 14种神笔记方法,只需选择1招,让你的学习和工作效率提高100倍!
  12. 工业设计算计算机类专业吗,北大工学院工业设计工程数一计算机方向经验贴
  13. 昂瑞威 HS6621 低功耗蓝牙芯片烧录调试
  14. Excel导入导出以及导出压缩文件
  15. 查看Oracle数据库版本号
  16. 那些工作中一不留神埋的雷
  17. iPhone 换电池 检测新电池实际容量
  18. RocksDB原理介绍
  19. Springboot 之 RESTFul风格
  20. 创新工程-涂鸦移动面试总结

热门文章

  1. springboot实现上传图片添加水印
  2. linux怎么运维和平精英游戏,和平精英开局怎么玩 和平精英开局玩法介绍
  3. Java项目 yaml明文密码加密
  4. 简单使用触发器(详细) SQL触发器的使用及语法
  5. instsrv.exe srvany.exe 实现不登陆桌面启动
  6. 跟我唱简谱v5.3 中文免费版
  7. hprose php用户手册,07 Hprose 服务器事件
  8. linux下WPS并安装字体
  9. P2P直播软件设计的技术原理和改进
  10. sublime快捷键 1