热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

javaftpclient上传_JavaFtpClient实现文件上传服务

一、Ubuntu安装Vsftpd服务1、安装sudoapt-getinstallvsftpd2、添加用户(uftp)sudouseradd-dhomeuftp-sbinbashuf

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



推荐阅读
  • 本人新手,用Unity3D想做一个简单的赛车游戏,现在的问题是转弯的时候很容易出现翻车的情况,求解决思路比如说你的中心是在(0,0,0),你把他设置成(0,-1.0,0)之类的就可 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • Apache Shiro 身份验证绕过漏洞 (CVE202011989) 详细解析及防范措施
    本文详细解析了Apache Shiro 身份验证绕过漏洞 (CVE202011989) 的原理和影响,并提供了相应的防范措施。Apache Shiro 是一个强大且易用的Java安全框架,常用于执行身份验证、授权、密码和会话管理。在Apache Shiro 1.5.3之前的版本中,与Spring控制器一起使用时,存在特制请求可能导致身份验证绕过的漏洞。本文还介绍了该漏洞的具体细节,并给出了防范该漏洞的建议措施。 ... [详细]
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
  • 如何使用PLEX播放组播、抓取信号源以及设置路由器
    本文介绍了如何使用PLEX播放组播、抓取信号源以及设置路由器。通过使用xTeve软件和M3U源,用户可以在PLEX上实现直播功能,并且可以自动匹配EPG信息和定时录制节目。同时,本文还提供了从华为itv盒子提取组播地址的方法以及如何在ASUS固件路由器上设置IPTV。在使用PLEX之前,建议先使用VLC测试是否可以正常播放UDPXY转发的iptv流。最后,本文还介绍了docker版xTeve的设置方法。 ... [详细]
  • Linux一键安装web环境全攻略
    摘自阿里云服务器官网,此处一键安装包下载:点此下载安装须知1、此安装包可在阿里云所有Linux系统上部署安装,此安装包包含的软件及版本为& ... [详细]
  • Python语法上的区别及注意事项
    本文介绍了Python2x和Python3x在语法上的区别,包括print语句的变化、除法运算结果的不同、raw_input函数的替代、class写法的变化等。同时还介绍了Python脚本的解释程序的指定方法,以及在不同版本的Python中如何执行脚本。对于想要学习Python的人来说,本文提供了一些注意事项和技巧。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • 集成电路企业在进行跨隔离网数据交换时面临着安全性问题,传统的数据交换方式存在安全性堪忧、效率低下等问题。本文以《Ftrans跨网文件安全交换系统》为例,介绍了如何通过丰富的审批流程来满足企业的合规要求,保障数据交换的安全性。 ... [详细]
  • 【BP靶场portswigger服务端10】XML外部实体注入(XXE注入)9个实验(全)
    前言:介绍:博主:网络安全领域狂热爱好者(承诺在CSDN永久无偿分享文章)。殊荣:CSDN网络安 ... [详细]
  • 网络安全是一个非常重要的课题,基本上你运行的服务后台越多,你就可能打开更多的安全漏洞.如果配置的恰当的话,Linux本身是非常安全可靠的,假使在Linux系统中有某个安全缺陷,由于Linu ... [详细]
  • 0x00端口渗透端口扫描端口的指纹信息(版本信息)端口所对应运行的服务常见的默认端口号.尝试弱口令端口爆破hydra端口弱口令NTScanHs ... [详细]
author-avatar
mobiledu2502873187
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有