课程咨询 :18487146383

  • Java FtpClient实现文件上传服务

    发布:昆明Java培训      来源:达内新闻      时间:2016-12-27

  • 昆明Java培训班的老师这一期给大家讲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

    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 = ew 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

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

上一篇:【昆明Java培训班】Servlet调用过程

下一篇:java的基础知识

最新开班日期  |  更多

Java--零基础全日制班

Java--零基础全日制班

开班日期:6月30日

Java--零基础业余班

Java--零基础业余班

开班日期:6月30日

Java--周末提升班

Java--周末提升班

开班日期:6月30日

Java--零基础周末班

Java--零基础周末班

开班日期:6月30日

  • 网址:http://km .java.tedu.cn      地址:昆明市官渡区春城路62号证券大厦附楼6楼
  • 课程培训电话:18487146383    全国服务监督电话:400-111-8989
  • 服务邮箱 tousu@tedu.cn
  • 2001-2016 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56