- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Java FtpClient 实现文件上传服务由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
1、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、在配置文件末尾添加:
1
2
3
4
5
|
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. 。
2、Java FtpClient 实现文件上传 。
1、Maven 依赖 。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<!-- 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 对象远程连接服务器 。
1
2
3
|
FTPClient ftp = new FTPClient();
//链接远程服务
ftp.connect("192.168.148.128", 21);
|
连接结果可以debug 看到:
3、FtpClient 登录服务器 。
1
2
3
4
5
6
7
|
ftp.login("uftp", "**");
//返回登录结果状态
int reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return ;
}
|
我们可以通过判断replyCode 和replyString 来查看用户是否登录成功! 。
4、修改文件上传路径和文件类型 。
1
2
3
4
|
//修改上传文件路径
ftp.changeWorkingDirectory("/home/uftp/images/");
//修改文件类型
ftp.setFileType(FTP.BINARY_FILE_TYPE);
|
5、上传文件 。
1
2
3
4
|
//获取上传文件的输入流
FileInputStream fileInputStream = new FileInputStream(new File("D:/123.jpg"));
//把文件推到服务器上
ftp.storeFile("hello.jpg", fileInputStream);
|
上传文件完成之后,通过查看返回结果判断时候上传成功 。
6、退出登录 。
1
2
|
//退出登录
ftp.logout();
|
以上步骤就是使用FtpClient完成了一次文件上传操作.
3、使用Nginx 查看服务器图片 。
1、nginx 配置文件 。
在server 中添加 图片地址解析 。
1
2
3
4
|
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 保证文件能够上传.
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持我! 。
原文链接:http://www.cnblogs.com/jaycekon/p/6221925.html 。
最后此篇关于Java FtpClient 实现文件上传服务的文章就讲到这里了,如果你想了解更多关于Java FtpClient 实现文件上传服务的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
自从我不得不从 java ftp 文件以来已经有很多年了,所以我对这种可能性有点脱节。我找到的文档列出了我使用的两种可能性。标准 Sun ftp 实现和 Apache 的 Jakarta ftp 解决
我尝试在我的应用程序中使用 ftp 客户端 第一个我使用org.apache.commons.net.ftp.FTPClient 但在Linux服务器上运行时 可以登录ftp服务器,但无法获取文件列表
我的 ftp 位置有 3 个不同大小的文件,分别是 2KB、76KB 和 216MB。我必须一个接一个地处理这些文件,我可以使用retrieveFileStream(FILE_NAME_HERE)轻松
FTPClient.changeWorkingDirectory & changeToParentDirectory()。如何更改 ftpCient 中的目录。在资源管理器中,ftp 路径如下所示 f
我有一个给定的 FTP 服务器。我可以通过 WinSCP 和其他程序连接到服务器。我已经通过 Java 连接到服务器,但过了一会儿我无法连接。根据 WinSCP,我可以一直连接。现在的问题是服务器是问
我正在尝试从 ftp 服务器下载文件,但在检索文件时卡住了。我正在使用 commons-net-3.6.jar 我注意到的事情 当我使用 ftpClient.enterRemotePassiveMod
我想从 Android 应用程序上传文件到 FTP 服务器。我为此使用 ftp4j.jar,因为它具有附加功能,可以附加到服务器上已有的文件。以前工作正常,但现在它已停止工作附加文件。其余正在工作。我
我正在制作一个应用程序,可让您一次将最多 5 个文件上传到服务器。我正在使用 apache FTPClient 和 Filezilla 服务器。当我一次上传一个文件时,它可以工作,但是当我尝试进行 2
大家好,我正在尝试上传一个小文件,如 4mb 或其他带有 apache commons ftpclient 的文件,但它没有上传我的文件,没有给我任何错误,并说上传成功这是我的代码,请提前帮助我谢谢.
我正在使用 Apache Commons net FTPClient 登录 FTP 服务器并读取文件。我成功登录,并且可以看到它登录成功,因为它在标题字符串中显示了工作目录路径。但是,当我使用 lis
我试图从 ftp 服务器获取列表并且有编码问题 FTPClient.listfiles(String path) 方法 如果路径包含非拉丁字符,它总是返回空数组。 (我也在 unicode 中使用带有
我制作了一个小应用程序,可以将文件上传到 FTP 服务器。问题是我在方法中使用了被动模式 enterLocalPassiveMode() 最近有人告诉我在 FTP 服务器上不允许使用被动模式,所以我应
我写了一个从 FTP 服务器下载文件的 java 类。一切看起来都很好,但是当我检查文件大小时,它们比原始文件小一点。 知道为什么会这样吗? import java.io.FileOutputStre
我正在使用 Apache FTPClient 获取文件和子目录文件列表。但它无法从带空格的目录名称中获取文件列表。这是一个示例 - 我尝试了两个不同的目录: FTPClient client
我是 android 和 java 编程的新手。我写了下面的代码来连接到 ftp 服务器 public class NewMainActivity extends Activity { TextVie
1、Ubuntu 安装 Vsftpd 服务 1、安装 sudo apt-get install vsftpd 2、添加用户(uftp) sudo useradd -d /home/
我有一个本地 FTP 服务器(使用 FileZilla 服务器创建),并且 XLS 文件很少。我需要将文件输入流返回到我的 Java 应用程序,以便我可以解析数据等。 为此,我尝试使用 FTPClie
我尝试使用 FTPClient 类进行连接。这段代码运行完美: client.connect("172.20.5.131"); 但是当 IP 地址类似于 -1406991772 时,我无法连接。我怎样
我正在使用 FTPClient (org.apache.commons.net.ftp.FTPClient) 将一些文件上传到 FTP 服务器。 我需要检查父目录是否存在;并根据需要创建它们
我必须上传一个zip文件到ftp服务器,这里的zip文件也是动态构建的。 import java.io.File; import java.io.FileInputStream; import jav
我是一名优秀的程序员,十分优秀!