简介
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 "上传异常";
}
}
}