700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > java ftp 上传失败 java ftp上传时 代码不报错 也上传不过去文件

java ftp 上传失败 java ftp上传时 代码不报错 也上传不过去文件

时间:2020-02-10 20:55:44

相关推荐

java ftp 上传失败 java ftp上传时 代码不报错 也上传不过去文件

今天测试上传文件到 ftp 服务器时,上传不过去。其中遇到了假死问题,已经解决了。

解决以后,就发现在这行代码,一直返回 false 。flag = ftpClient.storeFile(new String(remote.getBytes("UTF-8"),"iso-8859-1"), is);

我查了百度后,各种方法都试过了,都不行,例如:

1.开启这三个

2.设置//调用此方法解决假死状态(设置为被动模式:客户端通知服务端开通一个端口用来数据传输)

ftpClient.enterLocalPassiveMode();

3.设置字符集new String(remote.getBytes("UTF-8"),"iso-8859-1")

4.查看路径权限

都试过了,都不行!!!!已经无语了,百度了好久都是这几种解决办法。难受,有没有大佬帮忙看看!!!!代码如下:public class FTPUtil {

/**

* 文件上传

*

* @param host 服务器IP

* @param port 服务器端口

* @param username 服务器用户名

* @param password 服务器密码

* @param path /home/ftpuser/test/年/月/日

* @param fileName 文件名1.jpg

* @param is 文件流

* @return

*/

public static String fileUpload(String host, int port, String username, String password,

String path, String fileName, InputStream is) {

// 判断操作是否正确

boolean flag = false;

// 返回的文件名

String remote = null;

// 创建ftp客户端

FTPClient ftpClient = new FTPClient();

try {

// 设置编码字符集

ftpClient.setControlEncoding("UTF-8");

// 连接FTP服务器

ftpClient.connect(host, port);

// 登录

flag = ftpClient.login(username, password);

//调用此方法解决假死状态(设置为被动模式:客户端通知服务端开通一个端口用来数据传输)

ftpClient.enterLocalPassiveMode();

if (!flag) {

System.out.println("文件服务器用户名或密码错误");

return null; }

// 获取登录的状态码

int reply = ftpClient.getReplyCode();

if (!FTPReply.isPositiveCompletion(reply)) {

ftpClient.disconnect();

return null; }

/*****************创建目录 一次只能创建一个目录*****************/

String basePath = "";

for (String p : path.split("/")) {

basePath += (p + "/");

// 判断目录是否已经存在

boolean hasPath = ftpClient.changeWorkingDirectory(basePath);

if (!hasPath) {

// 创建目录 一次只能创建一个目录,失败的原因都是权限问题

//ftpClient.makeDirectory(basePath);

ftpClient.makeDirectory(new String(basePath.getBytes("UTF-8"),"iso-8859-1"));

}

}

// 重新指定上传的路径

ftpClient.changeWorkingDirectory(path);

/*******************************************************/

// 指定上传方式为二进制方式

ftpClient.setFileType(FTP.BINARY_FILE_TYPE);

// 得到文件后缀

String suffix = fileName.substring(fileName.lastIndexOf("."));

System.out.println("文件后缀为:" + suffix);

remote = UUID.randomUUID() + suffix;

// remote指定上传远程服务器的文件名 local指本地的输入流

//flag = ftpClient.storeFile(remote, is);

flag = ftpClient.storeFile(new String(remote.getBytes("UTF-8"),"iso-8859-1"), is);

System.out.println(flag);

if (!flag) {

System.out.println("文件上传失败,可能是权限,防火墙等问题");

return null; }

} catch (IOException e) {

System.out.println("文件上传错误,错误原因:" + e.getMessage());

} finally {

try {

if(is != null)

is.close();

ftpClient.logout();

if(ftpClient.isConnected())

ftpClient.disconnect();

} catch (IOException e) {

System.out.println("文件上传错误,错误原因:" + e.getMessage());

}

}

return remote;

}

public static void main(String[] args) throws FileNotFoundException {

FileInputStream is = new FileInputStream(new File("D://123.txt"));

fileUpload("182.92.xxx.xxx", 21, "ftpuser", "xxx",

"/home/ftpuser/", "123.txt", is);

}

}

返回结果

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。