源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Java FtpClient 实现文件上传服务

  • 时间:2022-04-28 00:44 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Java FtpClient 实现文件上传服务
[b]一、Ubuntu 安装 Vsftpd 服务[/b] 1、安装     [code]sudo apt-get install vsftpd[/code] 2、添加用户(uftp) [code]sudo useradd -d /home/uftp -s /bin/bash uftp[/code] 3、设置用户密码 [code]sudo useradd -d /home/uftp -s /bin/bash uftp[/code] 4、创建用户目录 [code]sudo mkdir /home/uftp[/code] 5、设置用户密码 [code]sudo passwd uftp[/code] [code][img]http://files.jb51.net/file_images/article/201612/2016122614202825.png[/img] [/code] 6、设置/etc/vsftpd.conf配置文件 [code]sudo vim /etc/vsftpd.conf[/code]     a、修改上传文件的权限: [img]http://files.jb51.net/file_images/article/201612/2016122614202826.png[/img]     这里会有一个问题,默认情况下的默认权限是 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、设置上传文件权限:     [code]write_enable = YES[/code] [img]http://files.jb51.net/file_images/article/201612/2016122614202827.png[/img] 这里如果不设置成YES 默认情况下不允许上传文件。 7、创建/etc/allowed_users 添加允许任务加入到文件中, [img]http://files.jb51.net/file_images/article/201612/2016122614202828.png[/img] 8、重启服务 [code]sudo service vsftpd restart[/code] [img]http://files.jb51.net/file_images/article/201612/2016122614202829.png[/img] 9、使用XFTP 测试连接 [img]http://files.jb51.net/file_images/article/201612/2016122614202830.png[/img] 使用XFtp 创建一个新的连接,这里需要注意选择的协议ftp,端口是21,在填写好账号密码之后,即可以连接我们的服务器。 [img]http://files.jb51.net/file_images/article/201612/2016122614202831.png[/img] 测试上传文件: 这里上传了一个txt 文件,我们可以看到文件的权限是666,这里主要就是因为我们设置了上传文件之后的权限 local_umask. [b]二、Java FtpClient 实现文件上传[/b] 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 看到: [img]http://files.jb51.net/file_images/article/201612/2016122614202832.png[/img] 3、FtpClient  登录服务器
ftp.login("uftp", "**");
   //返回登录结果状态
   int reply = ftp.getReplyCode();
   if (!FTPReply.isPositiveCompletion(reply)) {
    ftp.disconnect();
    return ;
   }
我们可以通过判断replyCode 和replyString 来查看用户是否登录成功! [img]http://files.jb51.net/file_images/article/201612/2016122614202833.png[/img] 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);
上传文件完成之后,通过查看返回结果判断时候上传成功 [img]http://files.jb51.net/file_images/article/201612/2016122614202834.png[/img] 6、退出登录
  //退出登录
  ftp.logout();
以上步骤就是使用FtpClient完成了一次文件上传操作。 [b]三、使用Nginx 查看服务器图片[/b] 1、nginx 配置文件 在server 中添加 图片地址解析
location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt)${
  root /home/uftp/images;
  expires 7d; 
} 
2、重启Nginx [code]./nginx -s reload[/code] 3、查看图片 [url=http://192.168.148.128/hello.jpg]http://192.168.148.128/hello.jpg[/url] [img]http://files.jb51.net/file_images/article/201612/2016122614202835.png[/img] [b]总结:到这里我们就完成了一个简单的图片上传到服务器,并且展示的小demo,配置过程中主要碰到的问题是关于文件权限的问题,如果没有设置vsftpd 中的配置文件中local_umask,即使我们成功上传了文件,也无法使用nginx 进行浏览,设置write_enable = YES 保证文件能够上传。[/b] 以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持编程素材网!
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部