springboot以FTP方式上传文件到远程服务器
一、html代码
上传附件: v本地上传
一、html代码
上传附件: v本地上传
二、js代码
upload.render({
accept:'file',
elem:'#larry-litpic',
url:interface_cms_article_upload,
field:'fileNames',
done:function(res,index,upload){
if(res.code!=200){
layer.open({
icon:2,
skin:"layui-layer-molv",
content:res.msg
});
}else{
layer.open({
icon:1,
skin:"layui-layer-molv",
content:res.msg
});
$('#upload-filename-display').text(res.filename);
$("input[name='fileId']").val(res.filename);
}
},
error:function(res){
}
});
三、后台controller:
@RequestMapping(value="/upload")
@ApiOperation(value="本地文件上传",notes="本地文件上传")
publicMapuploadfunction(HttpServletRequestrequest,HttpServletResponseresponse){
//创建文件对象并获取请求中的文件对象
MultipartFilefile=null;
MapresultData=newHashMap();
try{
MultipartHttpServletRequestmRequest=(MultipartHttpServletRequest)request;
file=mRequest.getFile("fileNames");
//判断上传非空
if(null==file){
resultData.put("code",0);
resultData.put("msg","上传文件失败");
resultData.put("filename",file.getOriginalFilename());
returnresultData;
}
//上传需要导入数据的文件
//用来检测程序运行时间
longstartTime=System.currentTimeMillis();
System.out.println("上传的文件名为:"+file.getOriginalFilename());
StringfileName=file.getOriginalFilename();
InputStreaminputStream=file.getInputStream();
StringhostName=uploadUtil.getHostname();
Stringusername=uploadUtil.getUsername();
Stringpassword=uploadUtil.getPassword();
StringtargetPath=uploadUtil.getTargetPath();
Stringsuffix=cmsArticleService.getSuffix(fileName);
fileName=cmsArticleService.upload(hostName,username,password,targetPath,suffix,inputStream);
//计算上传时间
longendTime=System.currentTimeMillis();
StringuploadTime=String.valueOf(endTime-startTime);
System.out.println("上传所用时间:"+uploadTime+"ms");
resultData.put("code",200);
resultData.put("msg","上传文件成功");
resultData.put("filename",fileName);
returnresultData;
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
returnnull;
}
四、后台service上传至远程服务器
//FTP文件上传
publicstaticStringupload(Stringhostname,Stringusername,Stringpassword,
StringtargetPath,Stringsuffix,InputStreaminputStream)throwsSocketException,IOException{
//实例化ftpClient
FTPClientftpClient=newFTPClient();
//设置登陆超时时间,默认是20s
ftpClient.setDataTimeout(12000);
//1.连接服务器
ftpClient.connect(hostname,21);
//2.登录(指定用户名和密码)
booleanb=ftpClient.login(username,password);
if(!b){
System.out.println("登陸超時");
if(ftpClient.isConnected()){
//断开连接
ftpClient.disconnect();
}
}
//设置字符编码
ftpClient.setControlEncoding("UTF-8");
//基本路径,一定存在
StringbasePath="/";
String[]pathArray=targetPath.split("/");
for(Stringpath:pathArray){
basePath+=path+"/";
//3.指定目录返回布尔类型true表示该目录存在
booleandirExsists=ftpClient.changeWorkingDirectory(basePath);
//4.如果指定的目录不存在,则创建目录
if(!dirExsists){
//此方式,每次,只能创建一级目录
booleanflag=ftpClient.makeDirectory(basePath);
if(flag){
System.out.println("创建成功!");
}
}
}
//重新指定上传文件的路径
ftpClient.changeWorkingDirectory(targetPath);
//5.设置上传文件的方式
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
//使用uuid,保存文件名唯一性
Stringuuid=UUID.randomUUID().toString();
/**
*6.执行上传
*remote上传服务后,文件的名称
*local文件输入流
*上传文件时,如果已经存在同名文件,会被覆盖
*/
booleanuploadFlag=ftpClient.storeFile(uuid+suffix,inputStream);
if(uploadFlag)
System.out.println("上传成功!");
returnuuid+suffix;
}
五、获取yml配置的工具类
@Data
@Component
publicclassUploadUtil{
@Value("${upload.hostname}")
privateStringhostname;
@Value("${upload.username}")
privateStringusername;
@Value("${upload.password}")
privateStringpassword;
@Value("${upload.targetPath}")
privateStringtargetPath;
}
总结
以上所述是小编给大家介绍的springboot以FTP方式上传文件到远程服务器,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。