Java FtpClient 实现文件上传服务

发布时间 - 2026-01-10 22:07:20    点击率:

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

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

sudo vim /etc/vsftpd.conf

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

    这里会有一个问题,默认情况下的默认权限是 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

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

7、创建/etc/allowed_users

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

8、重启服务

sudo service vsftpd restart

9、使用XFTP 测试连接

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

测试上传文件:

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

二、Java FtpClient 实现文件上传

1、Maven 依赖

<!-- 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 对象远程连接服务器

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

连接结果可以debug 看到:

3、FtpClient  登录服务器

ftp.login("uftp", "**");
   //返回登录结果状态
   int reply = ftp.getReplyCode();
   if (!FTPReply.isPositiveCompletion(reply)) {
    ftp.disconnect();
    return ;
   }

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

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);

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

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、查看图片

http://192.168.148.128/hello.jpg

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

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


# Java  # FtpClient  # 详解JAVA中使用FTPClient工具类上传下载  # Java使用FTPClient类读写FTP  # JAVA中使用FTPClient实现文件上传下载实例代码  # Java FTPClient实现文件上传下载  # Java中FTPClient上传中文目录、中文文件名乱码问题解决方法  # JavaWeb实现文件上传下载功能实例解析  # JAVA技术实现上传下载文件到FTP服务器(完整)  # java web图片上传和文件上传实例  # java web FTPClient实现上传文件到指定服务器  # 上传文件  # 配置文件  # 文件上传  # 如果没有  # 上传  # 重启  # 传了  # 情况下  # 完成了  # 会有  # 我们可以  # 可以看到  # 问题是  # 一个问题  # 推到  # 创建一个  # 需要注意  # 写好  # 过程中  # 设置成 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  python中快速进行多个字符替换的方法小结  Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】  新三国志曹操传主线渭水交兵攻略  如何在IIS管理器中快速创建并配置网站?  Laravel如何创建自定义Artisan命令?(代码示例)  C++用Dijkstra(迪杰斯特拉)算法求最短路径  UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】  如何注册花生壳免费域名并搭建个人网站?  Win11关机界面怎么改_Win11自定义关机画面设置【工具】  如何在搬瓦工VPS快速搭建网站?  如何快速完成中国万网建站详细流程?  如何在IIS中新建站点并解决端口绑定冲突?  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  用v-html解决Vue.js渲染中html标签不被解析的问题  潮流网站制作头像软件下载,适合母子的网名有哪些?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】  如何用AWS免费套餐快速搭建高效网站?  Laravel怎么为数据库表字段添加索引以优化查询  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  如何在香港免费服务器上快速搭建网站?  详解Oracle修改字段类型方法总结  如何在建站之星网店版论坛获取技术支持?  Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出  如何实现建站之星域名转发设置?  如何制作一个表白网站视频,关于勇敢表白的小标题?  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  如何基于PHP生成高效IDC网络公司建站源码?  公司网站制作需要多少钱,找人做公司网站需要多少钱?  公司网站制作价格怎么算,公司办个官网需要多少钱?  Laravel安装步骤详细教程_Laravel环境搭建指南  如何在Tomcat中配置并部署网站项目?  太平洋网站制作公司,网络用语太平洋是什么意思?  佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】  如何在服务器上三步完成建站并提升流量?  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID  js实现点击每个li节点,都弹出其文本值及修改  iOS验证手机号的正则表达式  如何用搬瓦工VPS快速搭建个人网站?  Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?