Java上传文件到Linux服务器
将从数据库中查询出的数据,按照字段排序,数据之间以 "|"分隔,存储到文本文件中,上传到指定的服务器
下面分两种方法来进行实现:SFTP 和 FTP,一般使用 SFTP
SFTP
SFTP 需要引入包
<dependency><groupId>commons-net</groupId><artifactId>commons-net</artifactId><version>3.8.0</version>
</dependency><dependency><groupId>com.jcraft</groupId><artifactId>jsch</artifactId><version>0.1.55</version>
</dependency>
public static void main(String[] args) {// sb 为查询出来的数据转换成的字符串ByteArrayInputStream inputStream = new ByteArrayInputStream(sb.toString().getBytes());boolean success = uploadFileSFTP("xxx.xxx.xxx.xxx", 22, "root", "root", "/home/data", "/20210626", "test.txt", inputStream);log.info("文件上传成功");
}
/*** 向FTP服务器上传文件** @param host FTP服务器ip* @param port FTP服务器端口* @param username FTP登录账号* @param password FTP登录密码* @param basePath FTP服务器基础目录,/home/data* @param filePath FTP服务器文件存放路径* @param filename 上传到FTP服务器上的文件名* @param input 输入流* @return 成功返回true,否则返回false*/
private boolean uploadFileSFTP(String host, int port, String username, String password, String basePath,String filePath, String filename, InputStream inputStream) {boolean result;FTPClient ftp = new FTPClient();try {JSch jsch = new JSch();// 获取sshSession 账号-ip-端口Session sshSession = jsch.getSession(username, host, port);// 添加密码sshSession.setPassword(password);Properties sshConfig = new Properties();// 严格主机密钥检查sshConfig.put("StrictHostKeyChecking", "no");sshSession.setConfig(sshConfig);// 开启sshSession链接sshSession.connect();// 获取sftp通道Channel channel = sshSession.openChannel("sftp");// 开启channel.connect();ChannelSftp sftp = (ChannelSftp) channel;// 设置为被动模式ftp.enterLocalPassiveMode();// 设置上传文件的类型为二进制类型ftp.setFileType(FTPClient.BINARY_FILE_TYPE);// 进入到要上传的目录 然后上传文件sftp.cd(basePath + filePath);// sftp put为上传,get为下载,之后会出一篇下载的代码sftp.put(inputStream, filename);inputStream.close();result = true;} catch (Exception e) {log.error("FTP服务器 文件上传失败 失败原因:{}", e.getMessage(), e);result = false;} finally {if (ftp.isConnected()) {try {ftp.disconnect();} catch (IOException e) {log.error("FTP服务器 关闭失败 失败原因:{}", e.getMessage(), e);}}}return result;
}
FTP
FTP需要引入的包
<dependency><groupId>commons-net</groupId><artifactId>commons-net</artifactId><version>3.8.0</version>
</dependency>
/*** @param url FTP服务器hostname* @param port FTP服务器端口* @param username FTP登录账号* @param password FTP登录密码* @param path FTP服务器保存目录* @param filename 文件名 6403_APP_YYYYMMDD_渠道标志_批次号.txt* @param input 输入流* @return*/
private boolean uploadFileFTP(String url, int port, String username, String password,String path, String filename, InputStream inputStream) {boolean success;FTPClient ftp = new FTPClient();try {int reply;// 链接 FTP 服务器// 如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器ftp.connect(url, port);// 登录ftp.login(username, password);// 返回链接码reply = ftp.getReplyCode();// 设置文件格式为二进制类型ftp.setFileType(FTPClient.BINARY_FILE_TYPE);if (!FTPReply.isPositiveCompletion(reply)) {ftp.disconnect();log.info("FTP服务器 拒绝连接");return false;}// 跳转到指定的目录路径ftp.changeWorkingDirectory(path);// 存储文件ftp.storeFile(filename, inputStream);inputStream.close();ftp.logout();success = true;} catch (IOException e) {log.error("FTP服务器 文件上传失败 失败原因:{}", e.getMessage(), e);return false;} finally {if (ftp.isConnected()) {try {ftp.disconnect();} catch (IOException e) {log.error("FTP服务器 关闭失败 失败原因:{}", e.getMessage(), e);}}}return success;
}
FTP上传会出现一个
MalformedServerReplyException: Could not parse response code
异常,解决办法可以参考下面的解决办法
https://blog.csdn.net/shenju2011/article/details/106614717
参考文档:
https://blog.csdn.net/a116385895/article/details/107150935/
https://blog.csdn.net/hpp1314520/article/details/72875151
Java上传文件到Linux服务器相关推荐
- java上传文件到服务器,java上传文件到云服务器
java上传文件到云服务器 内容精选 换一换 安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具,将文件上传到云服务器.例如QQ.exe.在本地主机和Windows云服务器上分别安装 ...
- linux非root上传文件,root账号无法上传文件到Linux服务器
普通权限的账号,通过ftp工具,可以正常连上Linux服务器,可以正常上传文件.但是root账号却无法上传文件. 网上搜了半天才知道,默认情况下vsftp是不允许root用户登录的,可以通过修改限制来 ...
- Windows 通过 SecureCRT 8.x 上传文件到Linux服务器
转载自 Windows 通过 SecureCRT 8.x 上传文件到Linux服务器 1.SecureCRT 连接 Linux 服务器,这一步操作简单: 2.连接并登录成功后,直接在连接成功的页签上 ...
- sftp方式从windows上传文件到Linux服务器
今天我一直用scp想实现从windows上传文件到Linux服务器,但是鼓捣了半天也没有实现.后来查资料才发现,scp实现文件的上传和下载貌似只能在Linux和Linux之间实现.(欢迎指正不对的地方 ...
- JAVA上传文件图片到服务器保存
这里我记录一个比较简单方便操作的JAVA上传文件图片到服务器并且保存! 首先是页面 html的 我这是提交一个文件和类型 <div style="border: 1px solid ...
- java上传文件到远程服务器(一)---HttpURLConnection方式
我们在之前的文章 JavaWeb静态资源分离思路 中已经了解到要把文件上传到静态资源服务器有三种方式: java上传文件到ftp服务器(这个方案需要在静态资源服务器安装ftp服务) java使用Htt ...
- 本地上传文件到Linux服务器
[问题描述] 如何将本地文件上传至Linux服务器上(这里分别以Windows和Ubuntu系统为例) [解决方法] scp filename username@IP:/home/directory ...
- M1 Mac上传文件到Linux服务器
M1mac上传文件到linux服务器 1.要保证服务器ssh端口是22 2.重启 3.进入要上传的文件的根目录 4.连接服务器上传文件 1.要保证服务器ssh端口是22 vi /etc/ssh/ssh ...
- c上传文件到linux服务器,上传文件到Linux服务器
1. Window上传文件到Linux 1.1 图形化界面winscp 适用于传送文件和目录,但要安装额外的软件winscp 1.2 lrzsz套件 适用于传送文件,使用ssh远程登录管理软件xshe ...
最新文章
- Python之父考虑重构Python解释器
- 12月28日二周四次【Python基础语法】
- 求正负数交互序列的和的MFC版
- NavReady的使用
- 一般控制矩阵转能控标准型
- Orac and Medians CodeForces - 1350D(思维)
- .NET Core 3.0 可卸载程序集原理简析
- 用友网络2021年净利润7.1亿元 同比减少28.2%
- mysql更新数据库中int 1_Mysql数据库int(1)和tinyint(1)的区别扩展阅读
- android的log.v,Android Log.v(),Log.d(),Log.i(),Log.w(),Log.e() - 何时使用每一个?
- 个性化你的IE,把你的名字刻在IE上!
- python基础--面向对象之绑定非绑定方法
- 全志F1C100s使用记录:u-boot linux rootfs 编译与烧录测试(基于SD卡)
- 轻松搞懂Java中的自旋锁
- python练习题之乌龟吃鱼游戏
- 在校大学生关于程序员培训机构的想法
- arduino的L298N电机驱动模块如何和直流电机接线
- Git-Clone succeeded, but checkout failed
- dns服务器 性能测试,dns服务器性能测试报告.docx
- Vue的渐进式怎么理解
热门文章
- webpack使用方法(一):安装webpack
- PERT2型保温管/PERT2型管材焊接前要特别注意什么
- html如何只刷新页面指定,js控制页面刷新 JS刷新当前页面的几种方法总结
- oracle数据库procedure(存储过程)的创建与调用
- android pcm文件大小_Android 音视频开发(二):使用 AudioRecord 采集音频PCM并保存到文件...
- 【Kail 学习笔记】Dmitry信息收集工具
- GDC2017 把“现实的天空”在游戏内再现【Forza Horizon 3】的天空表现
- Ruby_11_多线程と包管理
- Hystrix 服务降级和熔断
- 这是一个知识更新速度不断加快的时代,在线学习平台成新趋势