HTML部分
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="/jquery/jquery-1.12.4.min.js"></script>
</head>
<script type="text/javascript">
$(function(){
console.log(this);
})
function upload(){
var file = $("#file")[0].files[0];
var form = new FormData();
form.append("file", file);
console.log(form);
$.ajax({
url:'upload',
type:'POST',
data:form,
processData:false,//告诉jquery要传输data对象
contentType:false,//告诉jquery不需要增加请求头对于contentType的设置
success:function(data){
console.log(data);
},
error:function(e){
console.log(e);
}
})
}
</script>
<body>
<div>
<label for="file">上传图像</label> </a>
<input type="file" id="file" >
<button id="btn" onclick="upload()">submit</button>
</div>
</body>
</html>
JAVA部分:
一、首先要配置FTP服务器连接
package com.syasuo.demo.upload;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author SYASUO
* @date 2020/7/27 10:42
* 上传至FTP服务器
*/
public class FTPConfig {
private static Logger logger = LoggerFactory.getLogger(FTPConfig.class);
//建立连接
public static void connect(FTPClient ftpClient) throws Exception{
ftpClient.connect("FTP服务器ip地址",端口号);
int reply = ftpClient.getReplyCode();
if(!FTPReply.isPositiveCompletion(reply)){
logger.info("服务器拒接连接");
return;
}
if(!ftpClient.login("服务器用户名","服务器密码")){
logger.info("用户名或密码错误");
return;
}
}
//设置传输格式
public static void setProperty(FTPClient ftpClient) throws Exception{
ftpClient.enterLocalPassiveMode();
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
}
//建立文件夹
public static void createDir(FTPClient ftpClient,String path){
try {
ftpClient.makeDirectory(path);
} catch (Exception e) {
logger.error("创建目录失败:{}",e);
}
}
public static void logut(FTPClient ftpClient) throws Exception{
ftpClient.noop();
ftpClient.logout();
}
}
二、JAVA文件上传代码
package com.syasuo.demo.upload;
import org.apache.commons.net.ftp.FTPClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;
/**
* @author SYASUO
* @date 2020/7/27 11:02
*/
@Service
public class Upload {
Logger logger = LoggerFactory.getLogger(this.getClass());
/**
* 单文件上传
* @param file 文件体
* @return
* @throws Exception 异常抛出
*/
public String uploadFile(MultipartFile file) throws Exception{
FTPClient ftpClient = null;
String[] str = file.getOriginalFilename().split("\\.");
String fileName = UUID.randomUUID().toString().replaceAll("-","")+"."+str[str.length - 1];
String path = new SimpleDateFormat("yyyyMMdd").format(new Date());
try {
if(ftpClient == null){
ftpClient = new FTPClient();
}
//开始FTP服务器连接
FTPConfig.connect(ftpClient);
FTPConfig.setProperty(ftpClient);
FTPConfig.createDir(ftpClient,path);
//文件上传 开始
InputStream inputStream = file.getInputStream();
ftpClient.changeWorkingDirectory(path);
ftpClient.storeFile(fileName,inputStream);
inputStream.close();
//文件上传 结束
//登出FTP
FTPConfig.logut(ftpClient);
} catch (Exception e) {
logger.error("上传失败:{}",e);
} finally {
if(ftpClient.isConnected()){
try {
//中断FTP连接
ftpClient.disconnect();
} catch (IOException e) {
logger.error("关闭失败:{}",e);
}
}
}
//返回文件存储路径
return path+"/"+fileName;
}
}
*注意项:formData文件名一定要与Java控制层接受文件名一致
本文是form.append("file", file); Java控制层是file 文件名一致
效果图: