安装前确认是否安装了FTP,然后确认命令。
rpm -qa|grep vsftp;
ftp的安装
yum install vsftpd
启动ftp
服务vsftpd start
启动ftp时可能会发生启动失败的错误。 (忘记截图了) )。
约翰什么的来着
解决方案是修改ftp配置文件
查看ftp状态
服务vsftpd status
设置为在启动时自动启动: chkconfig --level 35 vsftpd on
注意:此时FTP还不可用。 必须安装客户端才能使用
image.png
image.png
下载后,在服务器上创建新目录,然后上传并安装下载的客户端
我的目录
image.png
#######然后安装
rpm-iv hftp-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上载文件
依赖下载
commons-net
commons-net
3.6
FileUtils工具类
package com.aust shop.aust shop.utils;
importorg.Apache.com mons.net.FTP.FTP client;
importorg.Apache.com mons.net.FTP.FTP reply;
import org.apache.log4j.Logger;
importorg.spring framework.web.multipart.multipart file;
import java.io.*;
import java.math.BigInteger;
import Java.net.malformedurlexception;
import Java.security.message digest;
//*
*计算文件md5的值
*/
公共类文件{
privatestaticloggerlogger=logger.getlogger (fileutils.class;
//ftp连接客户端
publicstaticftpclientftpclient=null;
//用户名
privatestaticfinalstringftpusername=' FTP admin ';
//密码
privatestaticfinalstringftppassword=' admin root 123 ';
//主机
privatestaticfinalstringftphost='自身服务器ip ';
//端口
privatestaticfinalintftpport=21;
//文件存储位置
privatestaticfinalstringftppath='/home/upload ';
//获取文件的md5值
publicstaticstringgetfilemd5(multipartfilefile )
try {
byte [ ] upload bytes=file.getbytes (;
messagedigestmd5=message digest.getinstance (' MD5 );
byte[] digest=md
5.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;
}
}