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事件循环优化异步代码?

