FtpUtils 工具类封装

public static boolean uploadFile(
String hostname,    int port, String username, String password, String pathname,  String remote,InputStream local) {    boolean flag=false;      try{  //创建 FtpClient 对象  FTPClient client=new FTPClient();   //建立和 ftp服务器的链接   client.connect(hostname, port); //登陆 ftp服务器   client.login(username, password);
//设置上传的文件的类型   client.setFileType(FTP.BINARY_FILE_TYPE);  //切换工作目录,文件上传后保存到那个目录
if(!client.changeWorkingDirectory(pathname)){   if(client.makeDirectory(pathname)){
client.changeWorkingDirectory(pathname);    }    }     local=new FileInputStream("D:/pic/1.jpg"); //实现文件上传   client.storeFile(remote, local);  local.close();        client.logout();  client.disconnect();    flag=true;     }catch(Exception ex){   ex.printStackTrace();  }    return flag;    } 

通过 Http 访问图片

Ego 上传商品图片

前端控件参数说明

提交上传请求路径 url

提交图片参数名称

上传后返回值 json模型

参考 kindeditor 控件文件上传文档:

KindEditor 4.x Documentation

2.2 创建 PictureResult 封装返回值

package com.bjsxt.ego.beans;/***  * 封装上传图片之后的返回结果  * **/
public class PictureResult { private Integer error;
//状态  1 失败  0 成功  private String url; //
上传图片后,图片在服务器的 url  private String message;
//响应到客户端的提示消息 public Integer getError() {
return error;
} public void setError(Integer error) {  this.error = error;  }
public String getUrl() {  return url; }  public void setUrl(String url) {this.url = url;}  public String getMessage() { return message;
}  public void setMessage(String message) {  this.message = message;  }     } 

ego-manager-web 功能实现

创建 ftp.properties

FTP_HOST=192.168.30.30FTP_PORT=21
FTP_USERNAME=ftpuser FTP_PASSWORD=ftpuser
FTP_PATH=/home/ftpuser/jd
IMAGE_HTTP_PATH=http://image.taotao.com/jd 

创建工具类 IDUtils

ManagerItemService 接口添加方法

public PictureResult uploadItemPic(MultipartFile file);

ManagerItemServiceImpl 实现方法

//通过 spring 的 EL表达式注入 ftp信息 @Value("${FTP_HOST}")  private String FTP_HOST;  @Value("${FTP_PORT}")
private Integer FTP_PORT; @Value("${FTP_USERNAME}") private String FTP_USERNAME;
@Value("${FTP_PASSWORD}")
private String FTP_PASSWORD; @Value("${FTP_PATH}") private String FTP_PATH; @Value("${IMAGE_HTTP_PATH}") private String IMAGE_HTTP_PATH;
@Override
public PictureResult uploadItemPic(MultipartFile file) { // TODO Auto-generated method stub boolean flag=false;   String fileName=null;   try{ //获得信息的文件名字   fileName=IDUtils.genImageName();
//获得上传的文件的原始名字
String oriName = file.getOriginalFilename();  //获得文件扩展名
String ext=oriName.substring(oriName.lastIndexOf("."));       fileName=fileName+ext;      InputStream local = file.getInputStream();   //实现文件上传到ftp   flag=FtpUtils.uploadFile(FTP_HOST, FTP_PORT, FTP_USERNAME, FTP_PASSWORD,   FTP_PATH, fileName, local);         }catch(Exception ex){    ex.printStackTrace();  flag=false;   }      PictureResult result=null;
if(flag){    result=new PictureResult();result.setError(0); result.setUrl(IMAGE_HTTP_PATH+"/"+fileName);  result.setMessage("ok");   }else{  result=new PictureResult();    result.setError(1); result.setUrl("url"); result.setMessage("error");
}  return result;
} 

创建 ItemImageUploadController类

package com.bjsxt.ego.manager.controller; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile; import com.bjsxt.ego.beans.PictureResult;
import com.bjsxt.ego.manager.service.ManagerItemService; @Controller
public class ItemImageController { //注入service @Autowired private ManagerItemService managerItemService; /**   * 处理图片上传请求 * ***/ @Request
Mapping(value="pic/upload",produces=MediaType. APPLICATION_JSON_VAL UE +";charset=UTF-8") @ResponseBody public PictureResult picUpload(MultipartFile uploadFile){ return managerItemService.uploadItemPic(uploadFile); }} 

配置 springmvc.xml

发布测试

kindeditor 批量上传 路径_FtpClient 实现文件上传相关推荐

  1. 00截断上传绕过_【文件上传与解析】文件上传与解析漏洞总结v1.0

    点击上方"公众号" 可以订阅哦! Hello,各位小伙伴晚上好~ 这里是依旧勤劳写公众号的小编~ 今天本公众号将推出一个新的模块,那就是漏洞知识点总结模块!!!(此处应有掌声~) ...

  2. 文件和参数一起上传_Spring boot的文件上传

    微信公众号:Java患者 专注Java领域技术分享 前言 文件上传的功能,基本上在所有的企业级应用都会有,那么在一个前后端分离的架构中,文件上传的功能又是如何去实现的呢.一般前端采用的是单页面应用,不 ...

  3. 使用Apache文件上传控件实现文件上传

    本文使用Apache提供的第三方文件上传控件进行文件上传 1.导入第三方commons-fileupload-1.3.2.jar和commons-io-2.5.jar包 2.页面form标签需添加en ...

  4. 【文件上传漏洞-01】文件上传漏洞概述、防御以及WebShell基础知识补充

    目录 1 文件上传漏洞概述 2 文件上传漏洞防御.绕过.利用 2.1 黑白名单策略 3 WebShell基础知识补充 3.1 WebShell概述 3.2 大马与小马 1 文件上传漏洞概述 概述:文件 ...

  5. asp.net实现ftp上传代码(解决大文件上传问题)

    asp.net实现ftp上传代码(解决大文件上传问题) 参考文章: (1)asp.net实现ftp上传代码(解决大文件上传问题) (2)https://www.cnblogs.com/LYunF/ar ...

  6. 文件上传linux服务器,Linux 文件上传Linux服务器

    进入命令行 在图形化桌面出现之前,与Unix系统进行交互的唯一方式就是借助由shell所提供的文本命令行界面(command line interface,CLI).CLI只能接受文本输入,也只能显示 ...

  7. php怎么上传函数,PHP单文件上传原理及上传函数的封装操作示例

    搜索热词 @H_404_0@本文实例讲述了PHP单文件上传原理及上传函数的封装操作.分享给大家供大家参考,具体如下: @H_404_0@表单: @H_404_0@0.PHP: 无标题文档 请选择您要上 ...

  8. SSM框架使用Layui文件上传插件实现多文件上传(多文件列表)

    SSM框架使用Layui文件上传插件实现多文件上传(多文件列表) pom.xml文件的配置 想要实现SSM框架实现多文件上传,必要的jar包必须要在pom.xml文件中引入.如下: <!--co ...

  9. SharePoint 2010 ——自定义上传页面与多文件上传解决方案

    SharePoint 2010 --自定义上传页面与多文件上传解决方案 参考文章: (1)SharePoint 2010 --自定义上传页面与多文件上传解决方案 (2)https://www.cnbl ...

最新文章

  1. 记一次升级Oracle驱动引发的死锁
  2. int.TryParse的使用
  3. python数据库操作nosql_用Python写一个NoSQL数据库
  4. 现在JavaScript日期–如何在JavaScript中获取当前日期
  5. mysql 1066解决方法_MySQL查询语法帮助:错误#1066-表格/别名不唯...
  6. python字符串出栈方法_Python 实现字符串反转的9种方法
  7. URAL 1346. Intervals of Monotonicity(DP)
  8. mapxtreme 论坛_会议纪要 | 取栓论坛 云端论剑 大梗死核心取栓专场 精华回顾
  9. AE CC2018/64位安装步骤及各种出现问题!!(真的装了好久)
  10. 出现报错Maximum call stack size exceeded
  11. 项目管理 : 需求管理的6个流程
  12. 批处理for循环命令初步学习
  13. 团队管理之绩效考核(OKR、KPI)
  14. 1.27(Bomb Game)
  15. 比知识更重要的,是元认知和深度思考
  16. 放生主要体现在对生命尊严的维护
  17. web前端开发浏览器兼容性 - 持续更新
  18. irq : nobody cared (try booting with the “irqpoll“ option) 问题说明
  19. LeetCode Weekly Contest 25 之 545.Boundary of Binary Tree
  20. css3禅意花园脚本_如何创建无脚本CSS3工具提示

热门文章

  1. java读取excel并替换占位符_正则表达式 – 有没有一种简单的方法来替换Excel中的占位符?...
  2. python使用matplotlib可视化、使用matplotlib可视化scipy.misc图像、自定义使用RdYIBu色彩映射、将不同亮度映射到不同的色彩
  3. R语言ggplot2可视化:可视化人口金字塔图、人口金字塔显示不同性别不同年龄段的人口数,是了解人口组成的最优可视化方法、人口金字塔图可以用来表示按体积排序的群体的分布、形成漏斗结构
  4. seaborn可视化散点图并自定义图像的标题(title)以及自定义标题的字体大小(Set a Title to a Seaborn Plot)
  5. R语言glmnet拟合lasso回归模型实战:lasso回归模型的模型系数及可视化、lasso回归模型分类评估计算(混淆矩阵、accuracy、Deviance)
  6. python使用textwrap包在已经生成的长字符串中嵌入回车符实战
  7. R语言names函数获取或者设置数据对象名称实战
  8. R语言多因素方差分析及评估假设检验
  9. python使用imbalanced-learn的RepeatedEditedNearestNeighbours方法进行下采样处理数据不平衡问题
  10. jupyter扩展插件Nbextensions的安装、使用