转载地址:http://blog.youkuaiyun.com/a1369508468/article/details/62219436
//安装ftp
1.安装vsftpd
yum -y install vsftpd
2. 配置vsftpd,vsftpd默认安装目录为/etc/vsftpd
vi /etc/vsftpd/vsftpd.conf
//允许匿名登录访问改为NO
anonymous_enable=NO
3. 创建ftp用户
//设置该用户不能登录 且目录为/usr/local/image 用户名为test
useradd -s /sbin/nologin -d /usr/local/image test
//设置密码
passwd test
4. 修改selinux
vi /etc/selinux/config
设置SELINUX=disabled
5. 修改
1)查看getsebool -a | grep ftp
![]()
![]()
2)修改
setsebool -P ftpd_full_access on
setsebool -P tftp_home_dir on
6. 开启端口
firewall-cmd --add-port=21/tcp
7. 启动vsftpd
service vsftpd start
8. 测试连接
//配置nginx
在/usr/local/nginx/conf/目录下的nginx.conf里
在头部添加
user root;
server{
listen 80;
server_name localhost;
charset utf-8;
location /{
root /usr/local/image/;
index index.html index.htm index.jsp;
}
}
//java
1.添加如下两个包
commons-net-1.4.1.jar
commons-fileupload-1.2.1.jar
在pom.xml里
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>1.4.1</version>
</dependency>
2.后台代码
//上传
@RequestMapping(value = "/ftpUpload",method = RequestMethod.POST)
@ResponseBody
public Map<Object,String> upload(String userid,MultipartFile file,HttpSession session) throws Exception{
final Map<Object,String> map = new HashMap<Object, String>(); //取出Session验证
User user = (User) session.getAttribute("loginUser");
if(user == null && "".equals(user)){
map.put("status","300");
map.put("message","为检测到登录信息!");
return map;
}else{
FTPClient ftp =new FTPClient();
int reply;//用来接收响应码
String hostname ="192.168.127.128";//ftp的IP地址
String username ="test";//ftp用户名
String password ="test";//ftp密码
int port = 21;//端口
ftp.connect(hostname, port);
ftp.login(username, password);
reply = ftp.getReplyCode();
//System.out.println("响应码:"+reply);
if(!(FTPReply.isPositiveCompletion(reply))){
map.put("message","FTP连接错误");
return map;
}
SimpleDateFormat sdf =new SimpleDateFormat("yyyyMMdd");//取当前日期作为文件夹
String dateFile = sdf.format(new Date()); //System.out.println("格式化后的date:"+dateFile);
//生成随机文件名 String fileName = UUID.randomUUID()+".jpg";
//System.out.println("文件名:"+fileName);
//拼接上传的路径
String uploadPath ="uploadImage/"+dateFile+"/"+fileName;
//System.out.println("上传的路径:"+uploadPath);
//创建文件夹 必须一层一层创建
ftp.makeDirectory("uploadImage");
ftp.makeDirectory("uploadImage"+"/"+dateFile);
ftp.enterLocalPassiveMode();//需要加上这一句,要不然ftp.storeFile有可能在正常情况下报false
if(!(ftp.changeWorkingDirectory(uploadPath))){
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
if(ftp.storeFile(uploadPath, file.getInputStream())){
//上传成功将数据存到数据库
UserImage userImage =new UserImage();
userImage.setImageUrl(uploadPath);
userImage.setUserId(user.getId());
int row = userImageService.insertUserImage(userImage);
if(row > 0){
map.put("status","200");
map.put("message","上传成功!");
//System.out.println("上传成功!");
}else{
map.put("status","300");
map.put("message","上传失败!");
//System.out.println("上传失败");
}
}else{
map.put("status","300");
map.put("message","上传失败!");
//System.out.println("上传失败");
}
file.getInputStream().close();
ftp.logout();
}
}
return map;
}