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

发布测试

ftp上传图片出现550_FtpClient 实现文件上传相关推荐

  1. 网络编程学习(11)/ FTP项目(5) ——文件上传和上传断点续存功能

    网络编程学习(11)/ FTP项目(5) --文件上传和上传断点续存功能 `服务端 lib 文件夹下的 main.py 状态码的变化` 文件上传功能 `服务端 lib 文件夹下的 main.py` ` ...

  2. Android 上传图片到服务器(多文件上传)

    Android客户端的UI与<Android 上传图片到服务器(单文件上传)>唯一区别增加了多文件上传的功能. 1.Android客户端多文件上传核心代码: * 多文件上传* @param ...

  3. ajax 批量上传图片插件,jQuery多文件上传插件jquery.imageuploader.js

    插件描述:jQuery多文件上传插件jquery.imageuploader.js,可以同时上传多个文件并支持拖拽上传 jquery.imageuploader.js 一款jquery多文件上传插件. ...

  4. java 批量上传图片插件_java多文件上传plupload控件实现多图片上传(一)

    使用的是plupload-2.1.2 控件.网上资源挺多的,很好下载. plupload 官方地址 : http://www.plupload.com/ plupload 示例: http://www ...

  5. ftpclient读取服务器文件能获得文件名文件大小0_Spring WEB工程整合使用FTP,ftp文本文件解析入库,文件上传下载

    友情提示:文章比较长,方法都是有一层层封装的,阅读需要按照文章顺序阅读 首先写一个简单的FTP工具类,先实现最基本的文件上传,下载,删除,拷贝功能.这里操作FTP是用的commons-net-3.3. ...

  6. ctf php文件上传图片格式,CTF-WEB:文件上传

    文件上传 一句话木马 利用文件上传漏洞往目标网站中上传一句话木马,然后就可以在本地获取和控制整个网站目录.利用一句话木马进行入侵时需要满足木马上传成功未被查杀,知道木马的路径在哪并保证上传的木马能正常 ...

  7. Win10搭建FTP服务器+java代码实现文件上传至FTP服务器

    Win10搭建ftp服务器 打开控制面板 -> 程序和功能,点击启用或关闭Windows功能,勾选红色方框内的选项 控制面板 -> 管理工具,如下打开IIS管理器 先在本地磁盘中创建一个目 ...

  8. ssm java上传图片预览_ssm文件上传_上传图片

    1.搭建好ssm框架 2.导入文件上传所需依赖 commons-fileupload commons-fileupload 1.4 commons-io commons-io 2.6 commons- ...

  9. 将文件上传至ftp服务器,FTP文件上传工具类,将文件上传至服务器指定目录

    将文件上传至ftp服务器,传入File对象,将文件上传至ftp服务器 需要配置修改的点: 1. 服务器ip端口(服务器ip 端口22/21). 2. 服务器账号密码(服务器登录用户名密码). 3. 上 ...

最新文章

  1. kaggle提交前预估本地cv和LB上的score是否相差很大
  2. c# 扩展方法奇思妙用高级篇一:改进 Scottgu 的 In 扩展
  3. 密钥文件登录服务器,密钥文件登录云服务器
  4. 计算机的iscsi配置,PC端的iSCSI参数设置方法
  5. 前端学习(1851)vue之电商管理系统电商系统vue创建项目
  6. Java h264起始码_h.264 – 使用H264视频的起始码
  7. django3数据库设计之商城项目
  8. poj3616(Milking Time)
  9. 计算机组成图解结构图,图解计算机结构与体系分类!!
  10. UMTS基础知识汇总
  11. 许可协议html,许可协议
  12. 申请Apple ID
  13. C++高并发服务器设计--共享内存封装(六)
  14. 1.ROS编程学习:helloworld的c++与python实现
  15. 2018年315晚会黑名单之夜,谁能逃过此劫?
  16. Vue 自定义富文本编辑器 tinymce 支持导入 word 模板
  17. 如何平衡老师任务和自学之间的关系
  18. 视频配音怎么配出好听的声音?试试这三个视频配音方法
  19. 定时器轮播图---(功能:自动轮播,左右箭头点击切换,点击圆点跳转图片)
  20. 电脑蓝屏了,错误代码:0x000000CE: DRIVER_UNLOADED_WITHOUT_CANCELLING_PENDING_OPERATIONS

热门文章

  1. 依赖倒置原则(DIP)、控制反转(IoC)、依赖注入(DI)(C#)
  2. .net core上 K8S(七).netcore程序的服务发现
  3. [翻译]初试C# 8.0
  4. CanalSharp-mysql数据库binlog的增量订阅消费组件Canal的.NET客户端
  5. 使用Nito.AsyncEx实现异步锁
  6. 通过C#/.NET API使用CNTK
  7. Build 2016,你可能忽视的几个细节
  8. java单精度实型_Java的八种基本类型及其各种数据类型的相互转换
  9. 【WEB API项目实战干货系列】- 接口文档与在线测试(二)
  10. Win8消费者预览版下载地址 包含中文下载地址及中文手册