JAVAweb,FtpClient实现ftp断点上传,下载,删除,获取文件大小,获取文件流功能

本文介绍了在Java Web项目中,使用FtpClient进行FTP文件上传、下载、删除、获取文件大小以及断点续传的功能实现。通过三种不同的上传方式,包括MultipartFile、本地文件路径和InputStream,详细说明了如何进行FTP操作。此外,还提供了查询文件是否存在等实用功能。
摘要由CSDN通过智能技术生成

项目背景:本菜鸡最近用SSM框架zuo的项目的后台管理系统,后台管理的业务会涉及视频和图片上传保存到专门的视频和图片服务器.

同时要从视频和图片服务器获取文件流传给前端显示,采用ftp来实现,所以采用了FtpClient.

首先是依赖jar包,用的较为新的版本

<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.6</version>
</dependency>

使用了三种上传文件的方式,

1.uploadFile(String pathname, String fileName, MultipartFile file);

参数:ftp路径,保存名,MultipartFile(因为前端上传的是这个类型);

2.uploadFile(String pathname, String fileName, String originfilename);

参数:ftp路径,保存名,本地文件绝对路径

3.uploadFile(String pathname, String fileName, InputStream inputStream,Long beginSize) ;

参数:ftp路径,保存名,输入流(MultipartFile.getInputStrem获得),文件开始传递的大小;(用于断点续传)

同时还提供了文件下载,删除,获取文件大小和查询文件是否存在的功能.

话不多说  直接上 FtpUtils.java工具类,借鉴了大神的代码,修改而成,感谢大佬们对小白的帮助.

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.SocketException;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import org.springframework.web.multipart.MultipartFile;

public class FtpUtils {
	// ftp服务器地址
	public String hostname = "192.168.1.*";
	// ftp服务器端口号默认为21
	public Integer port = 21;
	// ftp登录账号
	public String username = "user";
	// ftp登录密码
	public String password = "password";

	public FTPClient ftpClient = null;
	private static final int BUFFER_SIZE = 1024000;

	/**
	 * 65 初始化ftp服务器
	 */
	public void initFtpClient() {
		ftpClient = new FTPClient();
		ftpClient.setControlEncoding("utf-8");
		try {
			System.out.println("connecting...ftp服务器:" + this.hostname + ":" + this.port);
			ftpClient.connect(hostname, port); // 连接ftp服务器
			ftpClient.login(username, password); // 登录ftp服务器
			int replyCode = ftpClient.getReplyCode(); // 是否成功登录服务器
			if (!FTPReply.isPositiveCompletion(replyCode)) {
				System.out.println("connect failed...ftp服务器:" + this.hostname + ":" + this.port);
			}
			System.out.println("connect successfu...ftp服务器:" + this.hostname + ":" + this.port);
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 上传文件
	 * 
	 * @param pathname       ftp服务保存地址
	 * @param fileName       上传到ftp的文件名
	 * @param originfilename 待上传文件的名称(绝对地址) *
	 * @return
	 */
	public boolean uploadFile(String pathname, String fileName, MultipartFile file) {
		boolean flag = false;
		InputStream inputStream = null;
		try {
			System.out.println("开始上传文件");
			// inputStream = new FileInputStream(new File(originfilename));
			inputStream = file.getInputStream();
			initFtpClient();
			ftpClient.setFil
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值