怎么用JSP把本地的文件夹上传到FTP服务器?

A:本地,B:部署JSP的服务器C:FTP服务器,现在想用B的JSP把A的文件夹上传到C上,这个要怎么实现啊?怎么用JAVA实现对FTP服务器上文件的复制功能?... A:本地, B:部署JSP的服务器 C:FTP服务器, 现在想用B的JSP把A的文件夹上传到C上 ,这个要怎么实现啊?
怎么用JAVA实现对FTP服务器上文件的复制功能?
展开
 我来答
zwh_java
2011-11-29 · 超过44用户采纳过TA的回答
知道小有建树答主
回答量:134
采纳率:0%
帮助的人:81.2万
展开全部
前段时间做了一个文件上传ftp功能,你参照一下

package com.ftp.upload;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;

public class FTPUpload {
private FTPClient ftpClient = null;

private OutputStream outSteam = null;

/**
* ftp服务器地址
*/
private String hostname = "192.168.1.2";
/**
* ftp服务器端口
*/
int port = 21;
/**
* 登录名
*/
private String username = "admin";

/**
* 登录密码
*/
private String password = "admin";

/**
* 需要访问的远程目录
*/
private String remoteDir = "/home/demo";

public FTPUpload() { }

public FTPUpload(String hostname, int port, String username, String password, String remoteDir){
this.hostname = hostname;
this.port = port;
this.username = username;
this.password = password;
this.remoteDir = remoteDir;

}
/**
* 连接FTP服务器 并登录
* @param hostName FTP服务器hostname
* @param port FTP服务器端口
* @param username FTP登录账号
* @param password FTP登录密码
*/
private FTPClient connectFTPServer() {
try {
//1.创建FTPClient对象
ftpClient = new FTPClient();
//2.连接FTP服务器
// 如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
ftpClient.connect(hostname, port); //链接到ftp服务器
// System.out.println("连接到ftp服务器地址 --> ftp://" + hostName + ":" + port + " 成功..开始登录");

//3.判断连接ftp服务器是否成功
int reply = ftpClient.getReplyCode();
// System.out.println("以2开头的返回值就会为真:" + reply);
//以2开头的返回值就会为真
if (!FTPReply.isPositiveCompletion(reply)) {
ftpClient.disconnect();
return null;
}

//4.登录FTP服务器.用户名 密码
ftpClient.login(username, password);
System.out.println("登录成功." );

return ftpClient;
} catch (Exception e) {
e.printStackTrace();
ftpClient = null;
return ftpClient;
}
}

/**
* 向FTP服务器上传文件
* @param filePathName 上传文件的全路径名称
* @return 成功返回true,否则返回false
*/
public boolean uploadFile(String filePathName) {
// 初始表示上传失败
boolean success = false;
try {
// 创建FTPClient对象
ftpClient = connectFTPServer();
//创建文件夹
boolean flag = ftpClient.makeDirectory(remoteDir);
if(flag) {
System.out.println("创建文件夹:" + remoteDir );
}

// 转到指定上传目录
boolean flag0 = ftpClient.changeWorkingDirectory(remoteDir);
// 将上传文件存储到指定目录
if(filePathName == null || filePathName.length() == 0){
return success;
}
String filename = filePathName.substring(filePathName.replace("\\", "/").lastIndexOf("/") + 1, filePathName.length());

InputStream input = new FileInputStream(new File(filePathName));

// ftpClient.setBufferSize(1024);
// ftpClient.setControlEncoding("GBK");
// ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);//设置文件类型

boolean flag1 = ftpClient.storeFile(filename, input);
System.out.println("转到指定上传目录:" + flag0 + " 将上传文件存储到指定目录:" + flag1);

input.close(); // 关闭输入流
ftpClient.logout(); // 退出ftp
success = true; // 表示上传成功

} catch (Exception e) {
e.printStackTrace();
} finally {
if (ftpClient.isConnected()) {
try {
ftpClient.disconnect();
} catch (IOException ioe) {
}
}
}
return success;
}

/**
* 从FTP服务器指定目录下载文件 到本地目录中 OK
* @param fileName 要下载的文件名
* @param localPath 下载后保存到本地的路径
* @param showlist 下载时是否显示列表 ( true 显示 )
* @return
*/
public boolean downFile(String fileName, String localPath, boolean showlist) {
// 初始表示下载失败
boolean success = false;
if(fileName == null || fileName.length() == 0 || localPath == null || localPath.length() == 0){
return success;
}
try {
File file = new File(localPath);

if(!file.isDirectory()){
file.mkdir();
}
// 创建FTPClient对象
ftpClient = connectFTPServer();
// 转到指定下载目录
boolean flag = ftpClient.changeWorkingDirectory(remoteDir);
if(!flag) {
System.out.println("目录:" + remoteDir +"不存在!");
return success;
}
// 列出该目录下所有文件
FTPFile[] remoteFiles = ftpClient.listFiles();

// 遍历所有文件,找到指定的文件
if(showlist){
System.out.println("目录" + remoteDir + "下的文件:");
}

for (FTPFile ftpFile : remoteFiles) {
String name = ftpFile.getName();
if(showlist){
long length = ftpFile.getSize();
String readableLength = FileUtils.byteCountToDisplaySize(length);
System.out.println(name + ":\t\t" + readableLength);
}

if (name.equals(fileName)) {
// 根据绝对路径初始化文件
File localFile = new File(localPath + "/" + name);
// 输出流
OutputStream is = new FileOutputStream(localFile);
// 下载文件
ftpClient.retrieveFile(name, is);
is.close();
}
}
// 退出ftp
ftpClient.logout();
// 下载成功
success = true;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ftpClient.isConnected()) {
try {
ftpClient.disconnect();
} catch (IOException ioe) {
}
}
}
return success;
}

/**
* 显示FTP服务器指定文件夹中的文件及大小 OK
* @return
*/
private boolean showFileList() {
// 初始表示失败
boolean success = false;
try {
ftpClient = connectFTPServer();
FTPFile[] remoteFiles = null;
// 转到指定下载目录
boolean flag = ftpClient.changeWorkingDirectory(remoteDir);
if(!flag) {
System.out.println("目录:" + remoteDir +"不存在!");
return success;
} else{
remoteFiles = ftpClient.listFiles(remoteDir);
System.out.println("目录" + remoteDir + "下的文件:");
}

if(remoteFiles != null) {
for(int i=0;i < remoteFiles.length; i++){
String name = remoteFiles[i].getName();
long length = remoteFiles[i].getSize();
String readableLength = FileUtils.byteCountToDisplaySize(length);
System.out.println(name + ":\t\t" + readableLength);
}
}
// 表示成功
success = true;
} catch (Exception e) {
e.printStackTrace();
} finally {
//使用IO包关闭流
IOUtils.closeQuietly(outSteam);
try {
ftpClient.disconnect();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
return success;
}
public static void main(String[] args) {
FTPUpload ftp = new FTPUpload();
ftp.uploadFile("c:////test////bgssp.jar");
}
}
追问
这样做的话是把本地上文件上传 如果 JSP的服务不部署在本地呢?
追答
文件始终在服务器上某处存着,文件路径就给他服务器上面的地址
shenaodong
2011-11-16 · TA获得超过960个赞
知道小有建树答主
回答量:868
采纳率:0%
帮助的人:810万
展开全部
用smartupload组件试试
追问
smartupload 可以把文件从本地上传到服务器,还必须在服务器建一个临时文件夹才能再上传到FTP服务器?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
恽俊雅0iN888
2011-11-16 · TA获得超过185个赞
知道小有建树答主
回答量:281
采纳率:0%
帮助的人:202万
展开全部
ftp软件,用户名密码整错,建立连接,可以访问服务器了
追问
想实现用JSP 上传文件夹到FTP服务器的功能
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zxzsyifeng
2011-11-19
知道答主
回答量:11
采纳率:0%
帮助的人:4.4万
展开全部
dui de
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式