使用FTPClient进行文件服务器内文件的上传和下载
我用的FTPClient是由Apache组织的commons-net.jar包中的API,这个包用起来非常的方便,很容易上手。我在项目开发的过程中主要用到了文件的上传和下载功能,下面将我开发的代码贴出来供大家学习:
文件上传到文件服务器:在该部分内我遇到的主要问题上文件名乱码,word文档内容乱码,解决办法在代码中已经注释了,希望可以帮助到大家。
/**
* 上传部分代码如下:
* @param url:文件服务器主机地址
* @param port:文件服务器端口号
* @param username:用户名
* @param password:密码
* @param path:文件要保存的路径
* @param filename:文件名字
* @param input:文件输入流,即从本地服务器读取文件的IO输入流
* @return
*/
public static boolean uploadToFTPServer(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.makeDirectory("bbb");//创建文件目录
ftp.changeWorkingDirectory(path);
ftp.setFileType(FTP.BINARY_FILE_TYPE);//设置文件以二进制的形式上传,防止文件内容乱码出现
//设置文件名字的编码格式为iso-8859-1,因为FTP上传的时候默认编码为iso-8859-1,解决文件名字乱码的问题
filename = new String(filename.getBytes("GBK"),"iso-8859-1");
ftp.storeFile(filename, input); //开始上传文件
input.close();//关闭文件输入流
ftp.logout();//断开和ftp服务器之间的连接
success = true;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
}
catch (IOException ioe) {
}
}
}
return success; }
从文件服务器下载文件:
public static void downloadFromFileServer(String url,int port,String username,String password,String path,HttpServletRequest request, HttpServletResponse response) throws SocketException, IOException
{
//boolean success = false; //判断文件是否上传成功
FTPClient ftp = new FTPClient(); //创建一个客户端实例 ftp.connect(url, port);//连接FTP服务器
//如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
ftp.login(username, password);//登录
int reply = ftp.getReplyCode(); //获得返回的代码,来判断连接状态
ftp.changeWorkingDirectory("bbb");//转移到FTP服务器目录
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
}
//File localFile = new File(request.getServletContext().getRealPath("/upload/")+"12345678.doc");
//OutputStream is = new FileOutputStream(localFile);
// ftp.retrieveFile("1234.doc", is); FTPFile[] fs = ftp.listFiles(); for(FTPFile ff:fs){
if(ff.getName().equals("abc.txt")){//如果找到abc.txt则进行下载 ,可以自己设置要下载的文件名称
//设置要下载到的目录
File localFile = new File(request.getServletContext().getRealPath("/upload")+"/12345678.doc");
//得到输出流
OutputStream is = new FileOutputStream(localFile);
ftp.retrieveFile(ff.getName(), is); //开始下载文件
is.close();
}
} ftp.logout();
}
}
以上即为我在使用FTPClient进行文件的上传和下载部分的代码,记录下来以便我日后学习。
使用FTPClient进行文件服务器内文件的上传和下载的更多相关文章
- 文件的上传和下载--SpringMVC
文件的上传和下载是项目开发中最常用的功能,例如图片的上传和下载.邮件附件的上传和下载等. 接下来,将对Spring MVC环境中文件的上传和下载进行详细的讲解. 一.文件上传 多数文件上传都是通过表单 ...
- Java中文件的上传与下载
文件的上传与下载主要用到两种方法: 1.方法一:commons-fileupload.jar commons-io.jar apache的commons-fileupload实现文件上传,下载 [u ...
- java实现ftp文件的上传与下载
最近在做ftp文件的上传与下载,基于此,整理了一下资料.本来想采用java自带的方法,可是看了一下jdk1.6与1.7的实现方法有点区别,于是采用了Apache下的框架实现的... 1.首先引用3个包 ...
- Apache FtpServer 实现文件的上传和下载
1 下载需要的jar包 Ftp服务器实现文件的上传和下载,主要依赖jar包为: 2 搭建ftp服务器 参考Windows 上搭建Apache FtpServer,搭建ftp服务器 3 主要代码 在ec ...
- java实现文件的上传和下载
1. servlet 如何实现文件的上传和下载? 1.1上传文件 参考自:http://blog.csdn.net/hzc543806053/article/details/7524491 通过前台选 ...
- Python 进行 SSH 操作,实现本地与服务器的链接,进行文件的上传和下载
Python 进行 SSH 操作,实现本地与服务器的链接,进行文件的上传和下载 2018年5月26日 19:03 阅读 375 评论 7 我本地和服务器的连接一直使用的是 Xshell 5,而在与服务 ...
- 使用Loadrunner进行文件的上传和下载
最近使用loadrunner中需要录制文件的上传和下载,上传功能模块利用录制可以直接实现,下载无法实现,在网上找到了一段代码,自己动手试验了下,发现没有用 辛苦找到的,还是记录下吧 (1)LoadRu ...
- 在SpringMVC框架下实现文件的 上传和 下载
在eclipse中的javaEE环境下:导入必要的架包 web.xml的配置文件: <?xml version="1.0" encoding="UTF-8" ...
- SecureCRT使用sz和rz命令进行文件的上传和下载
SecureCRT可以使用sz和rz命令进行文件的上传和下载. sz文件下载: 格式:sz 文件名称 即可将服务器的文件下载至本地. rz文件上传: 格式:rz 文件名称 即可将本地文件上传至服务器. ...
随机推荐
- Wpf Binding.Path设置
Binding.Path 获取或设置绑定源属性的路径. 每个绑定通常都具有四个组件:绑定目标对象.目标属性.绑定源,以及要使用的绑定源值的路径.有关这些数据绑定概念的更多信息,请参见数据绑定概述. 使 ...
- (转)ThinkPHP系统常量
__ROOT__ : 网站根目录地址 __APP__ : 当前项目(入口文件)地址 __URL__ : 当前模块地址 __ACTION__ : 当前操作地址 __SELF__ : 当前 URL 地址 ...
- Xml解析之——Java/Android/Python
Xml解析之——Java/Android/Python 一.Xml文件 test.xml <note> <to>George</to> <from>Jo ...
- makecert 制作数字证书
在MS的SDK6.0中有个证书生成工具makecert.exe, 你可以使用这个工具来生成测试用的证书. 第一步,生成一个自签名的根证书(issuer,签发者). >makecert -n &q ...
- python下 help()使用方法
查看python所有的modules:help("modules") 单看python所有的modules中包含指定字符串的modules: help("modules ...
- JavaScript的“闭包”到底是什么
在JavaScripot函数闭包的定义中,一般都有一个outer 函数,一个inner函数.那么“闭包”到底是指outer函数呢,还是指inner函数? 从官方定义来看,并不清楚:A closure ...
- 安卓应用开发用户体验之禁止EditText自动获取焦点
一.问题描述: 在安卓应用开发时,经常会在同一个页面有许多不同的控件,在用户操作时,如何正确的在这些控件之间来回切换是良好用户体验的重要问题.可能会碰到如下问题:在点击页面内某控件时(假设控件为Spi ...
- Smarty中{literal}的使用详解
{literal} <script>function Login(){ document.LoginForm.submit();}</script>{/literal} == ...
- Joomla安装图文教程 (送 Joomla 中文语言包)
1.首先 下载 Joomla 源程序 首页: http://www.joomla.org/download.html 下载: download 2.为论坛 创建数据库.进入cPanel面板,选择my ...
- JQuery学习笔记--01
JQuery使用的话,必做的一下件事就是下载JQuery库,才可以使用下载地址:http://jquery.com/ 下面就是引用JQuery库了: <script type="tex ...