安装前先检查是否已经安装了FTP,检查命令:
rpm -qa|grep vsftp;
安装ftp
yum install vsftpd
启动ftp
service vsftpd start
在启动ftp的时候可能会出现启动失败的错误(我忘记截图了)
好像是job啥的来着
解决办法是修改ftp配置文件
查看ftp状态
service vsftpd status
设置成开机自启动:chkconfig --level 35 vsftpd on
注意:此时FTP还不能使用,得安装客户端才能够使用
到这里下载客户端http://rpm.pbone.net/index.php3/stat/45/idpl/15988817/numer/1/nazwa/ftp
image.png
下载好之后再服务器新建一个目录 上传刚才下载的客户端 然后进行安装
我的目录
image.png
#######然后安装
rpm -ivh ftp-0.17-51.1.el6.x86_64.rpm
image.png
安装完成后,需要先设置用户名密码,执行命令:
添加用户:
useradd admin -s /sbin/nologin
设置密码:
passwd admin
然后进行登陆:数据ftp进入到ftp操作命令里,执行命令oepn ip进入到指定的ftp中,然后输入用户名密码进行登陆
image.png
window下连接ftp上传文件
window+R
ftp +ip(你服务器的ip)
账号密码登录
put+任意文件的地址
测试上传 然后到你的ftp服务器根目录下看有没有文件
image.png
java连接ftp上传文件
下载依赖
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.6</version>
</dependency>
FileUtils工具类
package com.austshop.austshop.Utils;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
import org.apache.log4j.Logger;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
import java.math.BigInteger;
import java.net.MalformedURLException;
import java.security.MessageDigest;
/**
* 计算文件md5值
*/
public class FileUtils {
private static Logger logger = Logger.getLogger(FileUtils.class);
// ftp连接客户端
public static FTPClient ftpClient = null;
// 用户名
private static final String ftpUserName = "ftpadmin";
// 密码
private static final String ftpPassword = "adminroot123";
// 主机
private static final String ftpHost = "自己服务器ip";
// 端口
private static final int ftpPort = 21;
// 文件存储位置
private static final String ftpPath = "/home/upload";
// 获取文件的md5值
public static String getFileMD5(MultipartFile file) {
try {
byte[] uploadBytes = file.getBytes();
MessageDigest md5 = MessageDigest.getInstance("MD5");
byte[] digest = md5.digest(uploadBytes);
String hashString = new BigInteger(1, digest).toString(16);
return hashString;
} catch (Exception e) {
logger.error(e.toString(), e);
}
return null;
}
/**
* 初始化ftp服务器
*/
public static void initFtpClient(String ftpHost, String ftpUserName, String ftpPassword, Integer ftpPort) {
ftpClient = new FTPClient();
ftpClient.setControlEncoding("utf-8");
try {
//连接ftp服务器
ftpClient.connect(ftpHost, ftpPort);
//登录ftp服务器
ftpClient.login(ftpUserName, ftpPassword);
//登录服务器响应码
int replyCode = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(replyCode)) {
logger.error("connect failed...ftp服务器:" + ftpHost + ":" + ftpPort);
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 上传文件
*
* @param fileName 上传到ftp的文件名
* @param inputStream 输入文件流
* @return
*/
public static boolean uploadFile(String fileName, InputStream inputStream) {
// 设置开关
boolean flag = true;
try {
initFtpClient(ftpHost, ftpUserName, ftpPassword, ftpPort);
ftpClient.setFileType(ftpClient.BINARY_FILE_TYPE);
ftpClient.enterLocalPassiveMode();
ftpClient.makeDirectory(ftpPath);
ftpClient.setControlEncoding("utf-8");
ftpClient.storeFile(fileName, inputStream);
inputStream.close();
ftpClient.logout();
logger.info("上传文件成功");
} catch (Exception e) {
flag = false;
logger.error("上传文件失败");
e.printStackTrace();
} finally {
if (ftpClient.isConnected()) {
try {
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != inputStream) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return flag;
}
}
package com.austshop.austshop.service;
import com.austshop.austshop.Utils.FileUtils;
import com.austshop.austshop.Utils.MD5Utils;
import com.austshop.austshop.entity.FileInfo;
import com.austshop.austshop.mapper.FileMapper;
import com.austshop.austshop.service.impl.IFileService;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.util.UUID;
@Service(value = "fileSerice")
public class FileService implements IFileService {
/**
* 注入DAO层
*/
@Autowired
private FileMapper fileMapper;
private static Logger logger = Logger.getLogger(FileUtils.class);
@Override
public FileInfo getFileInsert(MultipartFile multipartFile) {
FileUtils fileUtils = new FileUtils();
// 文件后缀名
String extension = multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().indexOf('.') + 1);
// 文件前缀名
String suffix = MD5Utils.md5(multipartFile.getOriginalFilename());
// 拼接成新的文件名
String newFileName = suffix + "." + extension;
/**
* 进行md5校验 如果根据md5查询不到数据就执行新增
*/
try {
if (fileUtils.uploadFile(newFileName, multipartFile.getInputStream())) {
logger.info("文件" + newFileName + "上传成功");
} else {
logger.info("文件" + newFileName + "上传失败");
}
} catch (IOException e) {
e.printStackTrace();
}
FileInfo fileInfo = new FileInfo();
if (fileMapper.getFileInfoByMD5(FileUtils.getFileMD5(multipartFile)) == null) {
fileInfo.setId(UUID.randomUUID().toString().toLowerCase());
fileInfo.setFileName(newFileName);
fileInfo.setLength(multipartFile.getSize());
fileInfo.setMd5(FileUtils.getFileMD5(multipartFile));
fileInfo.setUrl("http://132.232.66.140:81/" + newFileName);
fileInfo.setCreate_time(new Date());
fileMapper.insertFileSelective(fileInfo);
} else {
fileInfo = fileMapper.getFileInfoByMD5(FileUtils.getFileMD5(multipartFile));
}
return fileInfo;
}
}
网友评论