java ftpclient 上传_Java FtpClient 实现文件上传服务

一、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

162612cfc24eff6ddeaf0136c693a22c.png

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

sudo vim /etc/vsftpd.conf

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

e4623e7c20fbbf25fe4087e3eb8c02e5.png

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

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

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

userlist_deny=NO

userlist_enable=YES

userlist_file=/etc/allowed_users

seccomp_sandbox=NO

local_enable=YES

c、设置上传文件权限:

write_enable = YES

183dcae14d4bced9220b7753e594f3ca.png

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

7、创建/etc/allowed_users

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

38c6bcca1ccf663dfa50f17abd307371.png

8、重启服务

sudo service vsftpd restart

c7aa466487be978917c4e81684fecbb8.png

9、使用XFTP 测试连接

3399d49ada7673a370161eb0c0861ff2.png

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

2895ed59a8877f77065ff96de874dad3.png

测试上传文件:

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

二、Java FtpClient 实现文件上传

1、Maven 依赖

org.apache.commons

commons-lang3

org.apache.commons

commons-io

commons-net

commons-net

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

FTPClient ftp = new FTPClient();

//链接远程服务

ftp.connect("192.168.148.128", 21);

连接结果可以debug 看到:

fa85213e6da72ccf52395ea6b58a4636.png

3、FtpClient  登录服务器

ftp.login("uftp", "**");

//返回登录结果状态

int reply = ftp.getReplyCode();

if (!FTPReply.isPositiveCompletion(reply)) {

ftp.disconnect();

return ;

}

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

babfea9e89a42999837c0595e4c3dc97.png

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

//修改上传文件路径

ftp.changeWorkingDirectory("/home/uftp/images/");

//修改文件类型

ftp.setFileType(FTP.BINARY_FILE_TYPE);

5、上传文件

//获取上传文件的输入流

FileInputStream fileInputStream = new FileInputStream(new File("D:/123.jpg"));

//把文件推到服务器上

ftp.storeFile("hello.jpg", fileInputStream);

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

85c37a16df14459a0b69e43b2ba2f58b.png

6、退出登录

//退出登录

ftp.logout();

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

三、使用Nginx 查看服务器图片

1、nginx 配置文件

在server 中添加 图片地址解析

location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt)${

root /home/uftp/images;

expires 7d;

}

2、重启Nginx

./nginx -s reload

3、查看图片

c73bae99f3388de64568954d84ca4ebf.png

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

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

时间: 2016-12-24

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值