首页 > 编程知识 正文

linux创建ftp用户,python ftp服务器

时间:2023-05-05 18:34:28 阅读:176349 作者:2251

安装前确认是否安装了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;

}

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。