文件上传步骤:

* 1.采用文件正确的接收方式(修改3处配置文件/接口类型等)

* 2.判断是否为一个图片,0表示无异常,1代表异常(jpg|gif|png)

* 3.判断是不是一个“正经”的图片,判断是否有宽度和高度

* 4.编辑磁盘目录,D:/jtphoto/images/yyyy/MM/dd/hh/mm

* 5.编辑相对路径,url:image.jt.com/images/yyyy/MM/dd/hh/mm

* 6.保存文件

EasyUI前台请求:

//编辑器参数
kingEditorParams : {
filePostName : "uploadFile",
uploadJson : '/pic/upload',
dir : "image"
},

Controller:  

 package com.jt.manage.controller;

 import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date; import javax.imageio.ImageIO; import org.apache.log4j.Logger;
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.jt.common.vo.PicUploadResult; @Controller
public class FileUploadController { private static final Logger logger = Logger.getLogger(FileUploadController.class);
/**
* 文件上传步骤
* 1.采用文件正确的接收方式(修改3处配置文件/接口类型等)
* 2.判断是否为一个图片,0表示无异常,1代表异常(jpg|gif|png)
* 3.判断是不是一个“正经”的图片,判断是否有宽度和高度
* 4.编辑磁盘目录,D:/jtphoto/images/yyyy/MM/dd/hh/mm
* 5.编辑相对路径,url:image.jt.com/images/yyyy/MM/dd/hh/mm
* 6.保存文件
* @param uploadFile
* @return
*/ @RequestMapping("/pic/upload")
@ResponseBody
public PicUploadResult fileUpload(MultipartFile uploadFile){ PicUploadResult picload = new PicUploadResult(); //获取图片名
String fileName = uploadFile.getOriginalFilename(); //截取图片后缀
String suff = fileName.substring(fileName.lastIndexOf(".")); //判断是否是图片
if(!(suff.matches(".(jpg||gif||png)"))){ //不是个图片
picload.setError(1);
logger.error("~~~ 您上传的不是个图片");
return picload;
} //判断上传的图片是不是个“正确”的图片
try {
BufferedImage bufferedImage = ImageIO.read(uploadFile.getInputStream()); //获取图片的宽高
int width = bufferedImage.getWidth();
int height = bufferedImage.getHeight();
picload.setWidth(width+"");
picload.setHeight(height+""); //编辑路径
String localPath = "D:/jtphoto/images/";
String urlPath = "http://image.jt.com/images/";
String dataPath = new SimpleDateFormat("yyyy/mm/dd/hh/mm").format(new Date()); //拼接路径
localPath += dataPath+uploadFile.getOriginalFilename();
urlPath += dataPath+uploadFile.getOriginalFilename(); File file = new File(localPath);
if(!file.exists()){
//文件不存在时创建多个文件
file.mkdirs();
} //将图片写入磁盘
uploadFile.transferTo(file);
picload.setUrl(urlPath); return picload; } catch (IOException e) {
e.printStackTrace();
picload.setError(1);
logger.error("~~~ 您上传不是个正规的图片");
return picload;
} } }
PicUploadResult 对象:
 package com.jt.common.vo;

 public class PicUploadResult {
private Integer error=0; //图片上传错误不能抛出,抛出就无法进行jsp页面回调,所以设置这个标识,0表示无异常,1代表异常
private String url; //浏览器能够解析的具体页面路径。相对路径: http//image.jt/img.jpg 本地路径:存放图片路径 D:/jt-image/....
private String width;
private String height; 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 getWidth() {
return width;
} public void setWidth(String width) {
this.width = width;
} public String getHeight() {
return height;
} public void setHeight(String height) {
this.height = height;
} }

实现效果:

注意: 开始上传后开始并没有回显图片,而是通过Nginx反向代理服务器技术来实现转向,由

http://image.jt.com/images/2017/07/25/15/26/57

转向到

D:/jtphoto/images/2017/07/25/15/26/574ed257Nebb74cec.jpg

图片上传功能(EasyUI前台框架+SSM框架)的更多相关文章

  1. megapix-image插件 使用Canvas压缩图片上传 解决手机端图片上传功能的问题

    最近在弄微信端的公众号.订阅号的相关功能,发现原本网页上用的uploadify图片上传功能到手机端有的手机类型上就不能用了,比如iphone,至于为啥我想应该不用多说了吧(uploadify使用fla ...

  2. Ueditor图片上传功能的配置

    之前的项目中碰到过图片上传功能的配置问题,但是没有记录下来,今天有个朋友突然又问到了我这个问题,当时没想起来之前怎么解决的,后来看了Ueditor的官方文档才回想起来. 官网文档巨多,一般大家遇到问题 ...

  3. java模拟表单上传文件,java通过模拟post方式提交表单实现图片上传功能实例

    java模拟表单上传文件,java通过模拟post方式提交表单实现图片上传功能实例HttpClient 测试类,提供get post方法实例 package com.zdz.httpclient; i ...

  4. drupal中安装CKEditor文本编辑器,并配置图片上传功能 之 方法二

    drupal中安装CKEditor文本编辑器,并配置图片上传功能 之 方法一 中介绍了ckeditor的安装和配置方法,其实还有另一种新方法,不用IMCE模块. 不过需要ckfinder的JS库,可以 ...

  5. ssm整合-图片上传功能(转)

    本文介绍 ssm (Spring+SpringMVC+Mybatis)实现上传功能. 以一个添加用户的案例介绍(主要是将上传文件). 一.需求介绍 我们要实现添加用户的时候上传图片(其实任何文件都可以 ...

  6. springmvc文件上传下载简单实现案例(ssm框架使用)

    springmvc文件上传下载实现起来非常简单,此springmvc上传下载案例适合已经搭建好的ssm框架(spring+springmvc+mybatis)使用,ssm框架项目的搭建我相信你们已经搭 ...

  7. FLASH图片上传功能—从百度编辑器UEditor里面提取出来

    为了记录工作中碰到的各种问题,以及学习资料整理,今天开始,将以往的文章进行了一个整理,以后也开始认真的记录学习过程中的各种问题 在HTML里面的文件上传功能一直是个问题,为了实现上传文件大小限制,怎样 ...

  8. Dede后台广告管理模块增加图片上传功能插件

    用户问题:网站广告后台管理非常方便,但是织梦后台的广告管理模块,发布广告时图片没有上传选项,只能用URL地址,很不方便,那么织梦帮就教大家一个方法实现广告图片后台直接上传,非常方便.先给大家看下修改后 ...

  9. 图片上传功能<转>http://blog.csdn.net/u011159417/article/details/50126023

    以前也实现过上传,只不过每次都是,写完之后没有总结,下次遇到时,还要重新写,重新调式,很是浪费时间,所以,今天实现一个上传图片的功能,包括简单的页面和servlet,下次再要写这个功能时,直接拿过来就 ...

随机推荐

  1. bzoj 3212 Pku3468 A Simple Problem with Integers 线段树基本操作

    Pku3468 A Simple Problem with Integers Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 2173  Solved:  ...

  2. js push

    $('.main_div').each(function(){ product_id = parseInt($(this).data('id')); product_num = parseInt($( ...

  3. 适配器模式 C#

    适配器模式 将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作. ● Target目标角色:该角色定义把其他类转换为何种接口,也就是我们的期望接 ...

  4. [bzoj4567][Scoi2016]背单词-Trie+贪心+模型转化

    Brief Description 给你N个互不相同的字符串,记\(S_i\)为第i个字符串,现在要求你指定N个串的出现顺序,我们用\(V_i\)表示第i个字符串是第几个出现的,则V为1到N的一个排列 ...

  5. pythonTensorFlow实现yolov3训练自己的目标检测探测自定义数据集

    1.数据集准备,使用label标注好自己的数据集. https://github.com/tzutalin/labelImg 打开连接直接下载数据标注工具, 2.具体的大师代码见下链接 https:/ ...

  6. MSSQL数据库 事务隔离级别

    数据库事务的隔离级别有4个,由低到高依次为Read uncommitted .Read committed .Repeatable read .Serializable ,这四个级别可以逐个解 脏读 ...

  7. LESS使用简介!

    我真的真的极度痛苦. 原本用了那么久的LESS,一直都是用编译工具(考拉)进行编译的,今天试了试用less.js来搞,按官网的都一毛一样,然而!就是编译不出来! 我用来擦鼻涕的卫生纸都一下午用了大半卷 ...

  8. vue-cli proxyTable中跨域中pathRewrite 怎么用

    问:proxyTable 里面的pathRewrite里面的‘^/iclient’:'' 什么意思? 答:用代理, 首先你得有一个标识, 告诉他你这个连接要用代理. 不然的话, 可能你的 html, ...

  9. MySQL 8.0 正式版 8.0.11 发布:比 MySQL 5.7 快 2 倍

    ySQL 8.0 正式版 8.0.11 已发布,官方表示 MySQL 8 要比 MySQL 5.7 快 2 倍,还带来了大量的改进和更快的性能! 注意:从 MySQL 5.7 升级到 MySQL 8. ...

  10. C++学习之路(三):volatile关键字

    volatile是c++中的一个关键字.用volatile修饰的变量,具有三个性质:易变性 (一)易变性: 由于编译器对代码执行的优化,两条赋值语句,下一条语句可能会直接从上一条语句使用的寄存器中取得 ...