javaweb 怎么样将本地文件传输到远程服务器

javaweb 怎么样将本地文件传输到远程服务器,第1张

可以通过JDK自带的API实现,如下代码:

package comcloudpowerutil;

import javaioFile;

import javaioFileInputStream;

import javaioFileOutputStream;

import javaioIOException;

import sunnetTelnetInputStream;

import sunnetTelnetOutputStream;

import sunnetftpFtpClient;

/

Java自带的API对FTP的操作

@Title:Ftpjava

/

public class Ftp {

/

本地文件

/

private String localfilename;

/

远程文件名

/

private String remotefilename;

/

FTP客户端

/

private FtpClient ftpClient;

/

服务器连接

@param ip 服务器IP

@param port 服务器端口

@param user 用户名

@param password 密码

@param path 服务器路径

@date 2012-7-11

/

public void connectServer(String ip, int port, String user,

String password, String path) {

try {

/ 连接服务器的两种方法/

//第一种方法

// ftpClient = new FtpClient();

// ftpClientopenServer(ip, port);

//第二种方法

ftpClient = new FtpClient(ip);

ftpClientlogin(user, password);

// 设置成2进制传输

ftpClientbinary();

Systemoutprintln("login success!");

if (pathlength() != 0){

//把远程系统上的目录切换到参数path所指定的目录

ftpClientcd(path);

}

ftpClientbinary();

} catch (IOException ex) {

exprintStackTrace();

throw new RuntimeException(ex);

}

}

public void closeConnect() {

try {

ftpClientcloseServer();

Systemoutprintln("disconnect success");

} catch (IOException ex) {

Systemoutprintln("not disconnect");

exprintStackTrace();

throw new RuntimeException(ex);

}

}

public void upload(String localFile, String remoteFile) {

thislocalfilename = localFile;

thisremotefilename = remoteFile;

TelnetOutputStream os = null;

FileInputStream is = null;

try {

//将远程文件加入输出流中

os = ftpClientput(thisremotefilename);

//获取本地文件的输入流

File file_in = new File(thislocalfilename);

is = new FileInputStream(file_in);

//创建一个缓冲区

byte[] bytes = new byte[1024];

int c;

while ((c = isread(bytes)) != -1) {

oswrite(bytes, 0, c);

}

Systemoutprintln("upload success");

} catch (IOException ex) {

Systemoutprintln("not upload");

exprintStackTrace();

throw new RuntimeException(ex);

} finally{

try {

if(is != null){

isclose();

}

} catch (IOException e) {

eprintStackTrace();

} finally {

try {

if(os != null){

osclose();

}

} catch (IOException e) {

eprintStackTrace();

}

}

}

}

public void download(String remoteFile, String localFile) {

TelnetInputStream is = null;

FileOutputStream os = null;

try {

//获取远程机器上的文件filename,借助TelnetInputStream把该文件传送到本地。

is = ftpClientget(remoteFile);

File file_in = new File(localFile);

os = new FileOutputStream(file_in);

byte[] bytes = new byte[1024];

int c;

while ((c = isread(bytes)) != -1) {

oswrite(bytes, 0, c);

}

Systemoutprintln("download success");

} catch (IOException ex) {

Systemoutprintln("not download");

exprintStackTrace();

throw new RuntimeException(ex);

} finally{

try {

if(is != null){

isclose();

}

} catch (IOException e) {

eprintStackTrace();

} finally {

try {

if(os != null){

osclose();

}

} catch (IOException e) {

eprintStackTrace();

}

}

}

}

public static void main(String agrs[]) {

String filepath[] = { "/temp/aatxt", "/temp/registlog"};

String localfilepath[] = { "C:\\tmp\\1txt","C:\\tmp\\2log"};

Ftp fu = new Ftp();

/

使用默认的端口号、用户名、密码以及根目录连接FTP服务器

/

fuconnectServer("127001", 22, "anonymous", "IEUser@", "/temp");

//下载

for (int i = 0; i < filepathlength; i++) {

fudownload(filepath[i], localfilepath[i]);

}

String localfile = "E:\\号码txt";

String remotefile = "/temp/哈哈txt";

//上传

fuupload(localfile, remotefile);

fucloseConnect();

}

}

有两种可能:

一、你的程序显示成功,但是只是个输出显示成功的语句,而实际上并没有上传文件;

二、文件确实上传成功了。但是你找的文件夹的路径不对。这种问题你可以这样验证:在tomcat所在的路径下,用电脑的文件搜索搜一下你上传的文件名,看能不能搜到。能搜到就说明是你找错位置了。搜不到就是真的没有上传成功。

String realpath = ServletActionContextgetServletContext()getRealPath("/upload") ;//获取服务器路径

String[] targetFileName = uploadFileName;

for (int i = 0; i < uploadlength; i++) {

File target = new File(realpath, targetFileName[i]);

FileUtilscopyFile(upload[i], target);

//这是一个文件复制类copyFile()里面就是IO操作,如果你不用这个类也可以自己写一个IO复制文件的类

}

其中private File[] upload;// 实际上传文件

private String[] uploadContentType; // 文件的内容类型

private String[] uploadFileName; // 上传文件名

这三个参数必须这样命名,因为文件上传控件默认是封装了这3个参数的,且在action里面他们应有get,set方法

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » javaweb 怎么样将本地文件传输到远程服务器

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情