首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java FtpClient 实现文件上传服务

Java FtpClient 实现文件上传服务

作者头像
九灵
发布于 2018-03-09 06:03:35
发布于 2018-03-09 06:03:35
2.5K00
代码可运行
举报
文章被收录于专栏:JaycekonJaycekon
运行总次数:0
代码可运行

一、Ubuntu 安装 Vsftpd 服务

   1、安装    

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt-get install vsftpd

   2、添加用户(uftp)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo useradd -d /home/uftp -s /bin/bash uftp

   3、设置用户密码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo useradd -d /home/uftp -s /bin/bash uftp

   4、创建用户目录

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo mkdir /home/uftp

   5、设置用户密码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo passwd uftp

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo vim /etc/vsftpd.conf

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

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
userlist_deny=NO
userlist_enable=YES
userlist_file=/etc/allowed_users
seccomp_sandbox=NO
local_enable=YES

    c、设置上传文件权限:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
write_enable = YES

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

   7、创建/etc/allowed_users

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

    8、重启服务

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo service vsftpd restart

   9、使用XFTP 测试连接

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

  测试上传文件:

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

二、Java FtpClient 实现文件上传

    1、Maven 依赖

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!-- 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 对象远程连接服务器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
            FTPClient ftp = new FTPClient();
            //链接远程服务
            ftp.connect("192.168.148.128", 21);

      连接结果可以debug 看到:

    3、FtpClient  登录服务器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
            ftp.login("uftp", "**");
            //返回登录结果状态
            int reply = ftp.getReplyCode();
            if (!FTPReply.isPositiveCompletion(reply)) {
                ftp.disconnect();
                return ;
            }

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
            //修改上传文件路径
            ftp.changeWorkingDirectory("/home/uftp/images/");
            //修改文件类型
            ftp.setFileType(FTP.BINARY_FILE_TYPE);    

     5、上传文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
            //获取上传文件的输入流
            FileInputStream fileInputStream = new FileInputStream(new File("D:/123.jpg"));
            //把文件推到服务器上
            ftp.storeFile("hello.jpg", fileInputStream);

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

    6、退出登录

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
            //退出登录
            ftp.logout();

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

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

    1、nginx 配置文件

      在server 中添加 图片地址解析

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt)${
     root /home/uftp/images;
     expires 7d;  
}   

     2、重启Nginx

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./nginx -s reload

    3、查看图片

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://192.168.148.128/hello.jpg

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-12-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
如何快速搭建图片服务器[通俗易懂]
分布式集群的项目, 正常一般的工程是把图片放在web项目的自身服务器的工程中,但在集群环境下,会出现找不到图片的情况。
全栈程序员站长
2022/07/25
5K0
如何快速搭建图片服务器[通俗易懂]
VSFTPD技术
2、在pom.xml通过坐标引入相关jar包( 该jar用于将文件封装成字节流的数据传输的功能 )
时间静止不是简史
2020/07/27
2.3K0
VSFTPD技术
配置VSFTP文件服务器
FTP 文件传输协议.用于互联网上的控制文件的双向传输,使用FTP来传输时,其实是具有一定程度的危险性,因为数据在因特网上面是完全没有受到保护的明文传输方式,VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,从名称定义上基本可以看出,这是为了解决ftp传输安全性问题的.
王 瑞
2022/12/28
6.5K0
配置VSFTP文件服务器
基于ubuntu搭建FTP文件服务
1. 安装并启动FTP服务 安装VSFTPD 使用apt-get安装vsftpd: sudo apt-get install vsftpd -y 启动VSFTPD 安装完成后VSFTPD会自动启动,通过netstat命令可以看到系统已经监听了21端口: sudo netstat -nltp | grep 21 如果没有启动,可以手动开启VSFTPD服务: sudo systemctl start vsftpd.service 2. 配置用户访问目录 新建用户目录 sudo mkdir
林清猫耳
2018/06/14
3K1
linux centos 搭建 ftp 创建虚拟用户 并使用 ftp 命令上传和下载文件
if [ ! -e $repo ]; then # -e 判断文件存在;参考:Shell if 条件判断文件或目录
eisc
2021/02/19
9K0
linux centos 搭建 ftp 创建虚拟用户 并使用 ftp 命令上传和下载文件
centos7-vsftpd文件服务器
文件传输协议(File Transfer Protocol,FTP),基于该协议FTP客户端与服务端可以实现共享文件、上传文件、下载文件。 FTP 基于TCP协议生成一个虚拟的连接,主要用于控制FTP连接信息,同时再生成一个单独的TCP连接用于FTP数据传输。用户可以通过客户端向FTP服务器端上传、下载、删除文件,FTP服务器端可以同时提供给多人共享使用。
yuezhimi
2020/09/30
7980
如何在 CentOS 8 上使用 Vsftpd 配置 FTP 服务器
本文最先发布在: https://www.itcoder.tech/posts/how-to-setup-ftp-server-with-vsftpd-on-centos-8/
雪梦科技
2020/04/01
8.6K0
如何在 CentOS 8 上使用 Vsftpd 配置 FTP 服务器
搭建 FTP 文件服务
安装并启动 FTP 服务 任务时间:5min ~ 10min 安装 VSFTPD 使用 apt-get 安装 vsftpd: sudo apt-get install vsftpd -y vsftpd 是在 Linux 上被广泛使用的 FTP 服务器,根据其[官网介绍][https://security.appspot.com/vsftpd.html],它可能是 UNIX-like 系统下最安全和快速的 FTP 服务器软件。 启动 VSFTPD 安装完成后 VSFTPD 会自动启动,通过 netsta
_gongluck
2018/03/08
5.7K0
3 FTP文件传输服务
用户控制列表文件: /etc/vsftpd/ftpusers(黑名单)、/etc/vsftpd/user_list
py3study
2020/01/14
2K0
Nginx 搭建图片服务器
本章内容通过Nginx 和 FTP 搭建图片服务器。在学习本章内容前,请确保您的Linux 系统已经安装了Nginx和Vsftpd。
芋道源码
2019/05/09
6.7K0
Nginx 搭建图片服务器
玩转企业常见应用与服务系列(二):文件共享服务 FTP 原理与实践
前面介绍了企业常用服务NFS网络文件共享存储相关的知识点,今天我将详细的为大家介绍文件共享服务FTP原理与实践相关知识,希望大家能够从中收获多多!如有帮助,请点在看、转发朋友圈支持一波!!!
民工哥
2023/11/16
6010
玩转企业常见应用与服务系列(二):文件共享服务 FTP 原理与实践
FTP远程文件传输服务安装与配置
描述: FTP只通过TCP连接,没有用于FTP的UDP组件.FTP不同于其他服务的是它使用了两个端口, 一个数据端口和一个命令端口(或称为控制端口)。通常21端口是命令端口,20端口是数据端口。当混入主动(Active)/被动模式(Passive)的概念时,数据端口就有可能不是20了。
全栈工程师修炼指南
2022/09/29
2.2K0
FTP远程文件传输服务安装与配置
linux学习第七十三篇:安装vsftp,方便Windows上传文件到linux
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/X__Alone/article/details/82115815
用户1215343
2019/07/02
1.1K0
linux学习第七十三篇:安装vsftp,方便Windows上传文件到linux
linux 安装 ftp并配置用户目录-ftp报错数字含义- linux 文件传输--自动化部署ftp
#!/bin/bash setenforce 0 # 临时关闭selinux getenforce # 查看selinux状态 sed -i "s/SELINUX\=.*/SELINUX=disabled/g" /etc/selinux/config # 永久关闭selinux,重启系统生效 repo="centos-yum.sh" if [ ! -e $repo ]; then # -e 判断文件存在;参考:Shell if 条件
eisc
2021/09/28
11.8K0
vsftp 用户_共享提示用户账户限制
[root@78778e06dc0a /]# yum install vsftpd -y
全栈程序员站长
2022/11/08
1.1K0
CentOS 7搭建基于虚拟用户的FTP服务
在vsftpd服务中,虚拟用户被默认作为匿名用户进行处理以降低权限,因此对应的配置项通常以anon_开头。
星哥玩云
2022/07/26
1.2K0
CentOS 7搭建基于虚拟用户的FTP服务
Linux上安装配置Nginx与ftp服务
首先在Nginx官网下载稳定版本的Nginx安装包,并将安装包上传到Linux。 使用 tar -zxvf nginx-1.16.0.tar.gz 将压缩包解压。
Java阿呆
2020/11/04
4.9K0
Linux上安装配置Nginx与ftp服务
解决Centos下vsftp无法上传文件的问题,附vsftp配置详解
重量网络最近买了一个腾讯云的 VPS,一直在折腾着,偶然请我帮忙敲几行命令解决一些小问题。 这不,今天他通过 yum 在线安装了一个 vsftp 后,发现不太会用,就按照网上的教程东搞西搞。最后发现无法上传文件了,就给我操作了一把。 用 SecureCRT 远程登录后,我做了如下检查: ①、打开了 vsftp 配置文件(/etc/vsftpd/vsftpd.conf)检查 write_enable 状态,发现正常: [root@VM_72_108_centos /]# cat /etc/vsftpd/vsf
张戈
2018/03/23
6.5K0
CentOS 7搭建vsftp服务器配置详解
首先网络、防火墙方面的基本要求要满足,比如静态ip、防火墙是否可以通过ftp的流量。
星哥玩云
2022/07/26
3.2K0
CentOS 7搭建vsftp服务器配置详解
Linux篇---ftp服务器的搭建
企业中linux搭建ftp服务器还是很实用的,所以本文针对centoos7和centoos6搭建服务器教程做个总结。
LhWorld哥陪你聊算法
2018/09/13
9.9K0
Linux篇---ftp服务器的搭建
相关推荐
如何快速搭建图片服务器[通俗易懂]
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档