java ftp上传文件_jaVA使用FTP上传下载文件的问题
为了实现 FTP上传下载,大概试了两个方法
sun.net.ftp.FtpClient
org.apache.commons.net
一开始使用sun.net.ftp.FtpClient,结果发现唯一的问题是它不可以创建目录,
随后试了下org.apache.commons.net,创建目录倒是没有问题,不过用FTPClient 的storeFile方法存储文件的时候发现文本文件正常,但是存储word 或者是压缩包等等的文件就会损坏,由于时间紧迫,网上也没有找到有效的解决办法,结果最后还是采用sun.net.ftp.FtpClient方法
sun.net.ftp.FtpClient中的sendserver方法可以发送FTP服务器的命令,从而可以通过它发送XMDK命令来创建目录
值得注意的是使用sendserver发送命令后,还应该要解析发回来的返回信息。并不是一个命令发送完后就可以发送下一个命令。有时候要等待到就绪状态才行。
使用ftpclient.readServerResponse来接收服务器发回来的执行结果
附代码:
sun.net.ftp.FtpClient:
// 连接ftp服务器
private void connectServer(String server, String user, String password, String path) throws IOException {
ftpClient_sun = new FtpClient();
ftpClient_sun = new FtpClient();
ftpClient_sun.openServer(server,22);
ftpClient_sun.login(user, password);
// path是FTP服务下主目录的子目录
if (path.length() != 0)
ftpClient_sun.cd(path);
ftpClient_sun.sendServer("XMKD test\r\n");
ftpClient_sun.readServerResponse();
ftpClient_sun.cd("test");
// 用2进制上传
ftpClient_sun.binary();
System.out.println("登录成功");
}
// 上传文件;并返回上传文件的信息
private String upload(FormFile formFile) throws Exception {
TelnetOutputStream os = null;
InputStream is = null;
try {
os = ftpClient_sun.put("upftp"+getName()+"." + getExtName(formFile.getFileName()));
is = formFile.getInputStream();
byte[] bytes = new byte[1024];
int c;
while ((c = is.read(bytes)) != -1) {
os.write(bytes, 0, c);
}
} finally {
if (is != null) {
is.close();
}
if (os != null) {
os.close();
}
}
return "上传文件成功!";
}
/**
* 下载文件
*
* @param fileName
* FormFile对象
* @param HttpServletResponse
* HTTP响应
* @throws IOException
*/
private void download(String fileName, HttpServletResponse response) throws IOException {
TelnetInputStream ftpIn = ftpClient_sun.get(fileName);
response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
OutputStream out = null;
try {
out = response.getOutputStream();
IOUtils.copy(ftpIn, out);
} finally {
if (ftpIn != null) {
ftpIn.close();
}
}
}
/**
* 展示图片 *
* @param fileName
* FormFile对象
* @param HttpServletResponse
* HTTP响应
* @throws IOException
*/
private void show(String fileName, HttpServletResponse response) throws IOException {
TelnetInputStream ftpIn = ftpClient_sun.get(fileName);
OutputStream out = null;
try {
out = response.getOutputStream();
IOUtils.copy(ftpIn, out);
} finally {
if (ftpIn != null) {
ftpIn.close();
}
}
}
org.apache.commons.net
// 连接ftp服务器
private void connectServer(String server, String user, String password, String path) throws IOException {
try {
ftpClient = new FTPClient();
ftpClient.connect(server);
ftpClient.login(user, password);
System.out.println(" login success !!! ");
if (path.length() != 0) {
boolean flag = ftpClient.changeWorkingDirectory(path);
if (flag) {
System.out.println(" set working directory successful !!! ");
}else
{
ftpClient.makeDirectory(path);
ftpClient.changeWorkingDirectory(path);
}
}
}
catch (IOException e) {
System.out.println(" not login !!! ");
System.out.println(e.getMessage());
}
}
// 上传文件;并返回上传文件的信息
private String upload(FormFile formFile) throws Exception {
InputStream fis = formFile.getInputStream();
// 上传本地文件到服务器上(文件名以'temp_'开头,当上传完毕后,名字改为正式名)
boolean flag = ftpClient.storeFile("upftp"+getName()+"."+getExtName(formFile.getFileName()), fis);
if (flag) {
System.out.println(" upload success !!! ");
}
// 关闭文件流
fis.close();
return "上传文件成功!";
}
java ftp上传文件_jaVA使用FTP上传下载文件的问题相关推荐
- java下载网络文件_java 从网络Url中下载文件
/** * 从网络Url中下载文件 * @param urlStr * @param fileName * @param savePath * @throws IOException */ publi ...
- linux下载文件夹到本地命令行,linux下载文件到本地命令,linux下载文件到本地命令 下载工具...
linux下载文件到本地命令,linux下载文件到本地命令 下载工具 来源:互联网/编辑:佚名/时间:2020-09-08 在手机上看 扫一扫进入手机端 linux用户命令在哪个文件夹下 用 whic ...
- 前端将二进制数据流转为文件_前端通过二进制流下载文件
JS下载文件两种方式总结: 下载文件主要分为两种形式,具体使用哪种方式取决于后台: 1.如果后台服务器的静态目录有可供下载的静态资源,后台接口返回文件路径,直接window.location.href ...
- java操作文件_java操作FTP,实现文件上传下载删除操作
上传文件到FTP服务器: /** * Description: 向FTP服务器上传文件 * @param url FTP服务器hostname * @param port FTP服务器端口,如果默认端 ...
- java sftp上传文件_Java通过sftp上传文件
Linux操作系统我们经常使用ssh中的ftp,sftp连接服务器,做相应操作. 如何通过java代码的形式采用sftp连接到服务器,进行文件上传下载等操作呢? 第一步,引入依赖包 com.jcraf ...
- java ftp 文件移动文件_java实现FTP远程文件移动(重命名、复制、拷贝)
首先就标题说明一点,java使用org.apache.commons.net.ftp.ftpclient包来操作FTP是很爽滴,但对远程文件操作,好像没有实现 复制文件的方法.我用的是文件移动(mov ...
- java url 上传文件_Java使用HttpURLConnection上传文件(转)
从普通Web页面上传文件很简单,只需要在form标签叫上enctype="multipart/form-data"即可,剩余工作便都交给浏览器去完成数据收集并发送Http请求.但是 ...
- java http 下载文件_JAVA通过HttpURLConnection 上传和下载文件的方法
本文介绍了JAVA通过HttpURLConnection 上传和下载文件的方法,分享给大家,具体如下: HttpURLConnection文件上传 HttpURLConnection采用模拟浏览器上传 ...
- java sftp 上传文件_java使用SFTP上传文件到资源服务器
本文实例为大家分享了java实现SFTP上传文件到资源服务器工具类,供大家参考,具体内容如下 首先得创建连接sftp服务器的公共类MySftp.java: package cn.test.util; ...
最新文章
- 2022-2028年中国钢丸行业市场行情监测及未来前景规划报告
- iOS 几种初始化的分析比较
- freebsd 运维人员
- php odbc连接sqlserver,php pdo连接sqlserver配置
- TOGAF:从业务架构到业务需求
- php cookie加密 类,PHP cookie加密类
- redius mysql_采用Linux系统的Freeradius+MySQL实现RADIUS认证服务器
- 2019年1月数据库流行度排行: PostgreSQL蝉联2018年度冠军
- python中添加路径_python中添加模块导入路径的方法
- [dfs] 洛谷 P1242 新汉诺塔
- 使用从mysql中取数据
- 商用密码应用安全性评估
- 对.Net 垃圾回收的C#编程相关方面(Finalize 和Dispose(bool disposing)和 Dispose())的一些理解体会【个人复习+zz】...
- 微信公众号 Markdown 编辑器
- 【Unity3D自学记录】Unity3D游戏开发之自由视角状态下的角色控制(一)
- 融云 java_融云开发者文档
- ListView的增删改查(实战)
- 09组团队项目-Alpha冲刺-1/6
- 5和6 objbc oracle_《Oracle Database 12c完全参考手册(第7版)(试读版)》
- win10 nas搭建_零起步自建家用NAS
热门文章
- ENSP配置 实例八 三层交换机DHCP配置加VLAN划分实验
- cmd255command.executereader()打印连接错误_打印经常遇到的几个问题,轻松解决
- oracle11g中用asmlib配置磁盘组,ASM学习笔记_配置ASMLIB磁盘组
- Struts 2框架创建的第一个项目
- red flag linux指定域名,Red Flag Server 4.1 系统管理手册(适用桌面linux4.1) 6
- java线程池执行器_Java线程池ThreadPoolExecutor的使用
- A5.2021年全国数学建模竞赛B题-赛题分析与评阅要点(乙醇偶合制备C4烯烃分析)
- localstorage存储大小_Cookie 已凉,Web 存储该这么做!
- vue中 点击事件的写法_vue中的事件:原生事件与自定义事件__Vue.js
- xposed hook 静态函数_浅谈 Xposed 新概念【模块作用域】