gpt4 book ai didi

Java FtpClient 实现文件上传服务

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 26 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Java FtpClient 实现文件上传服务由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

1、Ubuntu 安装 Vsftpd 服务 。

1、安装     。

sudo apt-get install vsftpd 。

2、添加用户(uftp) 。

sudo useradd -d /home/uftp -s /bin/bash uftp 。

3、设置用户密码 。

sudo useradd -d /home/uftp -s /bin/bash uftp 。

4、创建用户目录 。

sudo mkdir /home/uftp 。

5、设置用户密码 。

sudo passwd uftp 。

Java FtpClient 实现文件上传服务

6、设置/etc/vsftpd.conf配置文件 。

sudo vim /etc/vsftpd.conf 。

    a、修改上传文件的权限:

Java FtpClient 实现文件上传服务

    这里会有一个问题,默认情况下的默认权限是 077 也就是对应Linux 中的700 计算规则是 linux 的权限 777 - local_umask 。

    如果没有设置local_umask 文件权限,会导致上传之后的文件,我们无法通过服务器访问(缺少权限) 。

    b、在配置文件末尾添加:

?
1
2
3
4
5
userlist_deny=NO
userlist_enable=YES
userlist_file=/etc/allowed_users
seccomp_sandbox=NO
local_enable=YES

    c、设置上传文件权限:

    write_enable = YES 。

Java FtpClient 实现文件上传服务

这里如果不设置成YES 默认情况下不允许上传文件.

7、创建/etc/allowed_users 。

添加允许任务加入到文件中, 。

Java FtpClient 实现文件上传服务

8、重启服务 。

sudo service vsftpd restart 。

Java FtpClient 实现文件上传服务

9、使用XFTP 测试连接 。

Java FtpClient 实现文件上传服务

使用XFtp 创建一个新的连接,这里需要注意选择的协议ftp,端口是21,在填写好账号密码之后,即可以连接我们的服务器.

Java FtpClient 实现文件上传服务

测试上传文件:

这里上传了一个txt 文件,我们可以看到文件的权限是666,这里主要就是因为我们设置了上传文件之后的权限 local_umask. 。

2、Java FtpClient 实现文件上传 。

1、Maven 依赖 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
<!-- Apache工具组件 -->
   < dependency >
    < groupId >org.apache.commons</ groupId >
    < artifactId >commons-lang3</ artifactId >
   </ dependency >
   < dependency >
    < groupId >org.apache.commons</ groupId >
    < artifactId >commons-io</ artifactId >
   </ dependency >
   < dependency >
    < groupId >commons-net</ groupId >
    < artifactId >commons-net</ artifactId >
   </ dependency >

2、创建FtpClient 对象远程连接服务器 。

?
1
2
3
FTPClient ftp = new FTPClient();
//链接远程服务
ftp.connect("192.168.148.128", 21);

连接结果可以debug 看到:

Java FtpClient 实现文件上传服务

3、FtpClient  登录服务器 。

?
1
2
3
4
5
6
7
ftp.login("uftp", "**");
    //返回登录结果状态
    int reply = ftp.getReplyCode();
    if (!FTPReply.isPositiveCompletion(reply)) {
     ftp.disconnect();
     return ;
    }

我们可以通过判断replyCode 和replyString 来查看用户是否登录成功! 。

Java FtpClient 实现文件上传服务

4、修改文件上传路径和文件类型 。

?
1
2
3
4
//修改上传文件路径
ftp.changeWorkingDirectory("/home/uftp/images/");
//修改文件类型
ftp.setFileType(FTP.BINARY_FILE_TYPE);

5、上传文件 。

?
1
2
3
4
//获取上传文件的输入流
  FileInputStream fileInputStream = new FileInputStream(new File("D:/123.jpg"));
//把文件推到服务器上
ftp.storeFile("hello.jpg", fileInputStream);

上传文件完成之后,通过查看返回结果判断时候上传成功 。

Java FtpClient 实现文件上传服务

6、退出登录 。

?
1
2
//退出登录
ftp.logout();

以上步骤就是使用FtpClient完成了一次文件上传操作.

3、使用Nginx 查看服务器图片 。

1、nginx 配置文件 。

在server 中添加 图片地址解析 。

?
1
2
3
4
location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt)${
   root /home/uftp/images;
   expires 7d;
}

2、重启Nginx 。

./nginx -s reload 。

3、查看图片 。

http://192.168.148.128/hello.jpg 。

Java FtpClient 实现文件上传服务

总结:到这里我们就完成了一个简单的图片上传到服务器,并且展示的小demo,配置过程中主要碰到的问题是关于文件权限的问题,如果没有设置vsftpd 中的配置文件中local_umask,即使我们成功上传了文件,也无法使用nginx 进行浏览,设置write_enable = YES 保证文件能够上传.

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持我! 。

原文链接:http://www.cnblogs.com/jaycekon/p/6221925.html 。

最后此篇关于Java FtpClient 实现文件上传服务的文章就讲到这里了,如果你想了解更多关于Java FtpClient 实现文件上传服务的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com