java ftps上传_java – 使用FTPS将文件从android传输到服务器
您可以尝试以下代码,我希望它也适用于您的情况.
该代码使用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传输到服务器相关推荐
- java 分块上传_Java 文件分块上传客户端和服务器端源代码
本博客介绍如何进行文件的分块上传.本文侧重介绍客户端,服务器端请参考博客<Java 文件分块上传服务器端源代码>.建议读者朋友在阅读本文代码前先了解一下 MIME 协议. 所谓分块上传并非 ...
- java 断点上传_java HTTP文件断点上传
之前仿造uploadify写了一个HTML5版的文件上传插件,没看过的朋友可以点此先看一下~得到了不少朋友的好评,我自己也用在了项目中,不论是用户头像上传,还是各种媒体文件的上传,以及各种个性的业务需 ...
- android java服务器文件传输_java – 使用FTPS将文件从android传输到服务器
您可以尝试以下代码,我希望它也适用于您的情况. 该代码使用Apache Commons vsf2通过安全ftp连接(SFTP)上传文件 try { String filepath = "&q ...
- java http 上传_Java使用HttpURLConnection上传文件
从普通Web页面上传文件非常easy.仅仅须要在form标签叫上enctype="multipart/form-data"就可以,剩余工作便都交给浏览器去完毕数据收集并发送Http ...
- java 图片上传_java web图片上传和文件上传实例
本篇文章主要介绍了java web图片上传和文件上传实例,具有一定的参考价值,有需要的可以了解一下. 图片上传和文件上传本质上是一样的,图片本身也是文件.文件上传就是将图片上传到服务器,方式虽然有很多 ...
- java 图片分段上传_java实现分段读取文件并通过HTTP上传的方法
本文实例讲述了java实现分段读取文件并通过HTTP上传的方法.分享给大家供大家参考.具体如下: 1.首先将文件分段,用RandomAccessFile 2.分段后将分出的内容上传到http URL ...
- java cropper 上传_java web 网站头像上传处理 (springmvc +bootstrap+cropper)
制作头像上传.请根据您的实际需求,修改代码,不完全正确,仅供参考! 前端页面设计使用bootstrap ,头像预览和剪裁工具使用cropper 后台使用springmvc. 现在来看前端的页面设计 前 ...
- java 客户端上传_java实现上传文件到服务器和客户端
JAVA编写一个可以上传文件的服务器和客户端,具体内容如下 服务端 class Server { public static void main(String[] args) throws Excep ...
- java视频上传_Java上传视频实例代码
页面: 上传文件时的关键词:enctype="multipart/form-data" String path = request.getContextPath(); String ...
- java断点续传上传_java断点续传上传文件,突然关闭然后再上传文件为什么不是从之前上传的进度上传...
Controller层里这么写的 @Controller public class UploadAction { @Autowired private File_Service FileSerivce ...
最新文章
- 【翻译】Ext JS 6 Beta发布
- 溃不成军:科通芯城一度再跌近30% 股价三天腰斩
- Uber的一键式聊天智能回复系统
- ios-UIButton-常用方法
- css rem 大屏开发_px/em/rem的区别与应用
- 利用hibernate中的SchemaExport生成数据表
- python简单的编程_简单的Python2.7编程初学经验总结
- --------》》》》【醒目】一些比较有用的东西
- spark写出分布式的训练算法_Spark0.9分布式运行MLlib的线性回归算法
- yaw公式_3D 视角旋转矩阵 yaw pitch roll (pan, tilt)的数学计算
- 14种神笔记方法,只需选择1招,让你的学习和工作效率提高100倍!
- 工业设计算计算机类专业吗,北大工学院工业设计工程数一计算机方向经验贴
- 昂瑞威 HS6621 低功耗蓝牙芯片烧录调试
- Excel导入导出以及导出压缩文件
- 查看Oracle数据库版本号
- 那些工作中一不留神埋的雷
- iPhone 换电池 检测新电池实际容量
- RocksDB原理介绍
- Springboot 之 RESTFul风格
- 创新工程-涂鸦移动面试总结