您的位置:首页 > 编程语言 > Java开发

Spring Boot整合FTP实现上传图片或文件

2019-06-18 16:18 2506 查看

简介

jquery 通过 ajax 调用 spring boot 后台方法,实现图片或文件上传到 ftp 服务器

第一步:

pom.xml文件中引入依赖包

<!-- FtpClient依赖包 -->
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.3</version>
</dependency>

第二步:

编写 ftp 上传文件工具类

package com.ruoyi.framework.util;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;

import java.io.IOException;
import java.io.InputStream;

/**
* @Description:ftp文件上传工具类
* @author Wang JinLei
* @date 2019年5月14日 上午9:51:26
*/
public class FTPFileUploadUtils {

//ftp服务器ip地址
private static final String FTP_ADDRESS = "192.168.1.110";
//端口号
private static final int FTP_PORT = "21";
//用户名
private static final String FTP_USERNAME = "aaa";
//密码
private static final String FTP_PASSWORD = "aaa";
//图片路径
private static final String FTP_BASEPATH = "/images/";

public static boolean uploadFile(String originFileName, InputStream input){
boolean success = false;
FTPClient ftp = new FTPClient();
ftp.setControlEncoding("GBK");
try {
int reply;
ftp.connect(FTP_ADDRESS, FTP_PORT);// 连接FTP服务器
ftp.login(FTP_USERNAME, FTP_PASSWORD);// 登录
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return success;
}
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
ftp.makeDirectory(FTP_BASEPATH );
ftp.changeWorkingDirectory(FTP_BASEPATH );
ftp.storeFile(originFileName,input);
input.close();
ftp.logout();
success = true;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException ioe) {
}
}
}
return success;
}
}

第三步:

编写 Controller

package com.ruoyi.web.api;

import java.io.InputStream;
import java.util.UUID;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import com.ruoyi.common.annotation.Log;
import com.ruoyi.framework.util.FTPFileUploadUtils;

/**
* @Description:ftp文件上传类
* @author Wang JinLei
* @date 2019年5月14日 上午9:51:26
*/
@Controller
@RequestMapping("/system/data")
public class FTPFileUploadController {

@PostMapping("/updateAvatar")
@ResponseBody
public String updateAvatar(MultipartFile file){
try{
if (!file.isEmpty()){
//获取图片或文件的后缀名
String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
//拼接图片或文件名称,32位随机uuid+后缀名
String fileName = UUID.randomUUID().toString().replace("-", "").toLowerCase() + suffix;
InputStream inputStream = file.getInputStream();
//调用ftp上传文件工具类,返回true成功,返回false失败
Boolean flag = FTPFileUploadUtils.uploadFile(fileName,inputStream);
if(flag == true){
//这里按功能需求做相应处理即可
return "上传成功";
}
}
}
return "上传失败";
} catch (Exception e){
return "上传异常";
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: