1、多文件上传:http://blog.csdn.net/a1314517love/article/details/24183273

2、单文件上传的简单示例:http://blog.csdn.net/cheung1021/article/details/7084673

3、springMVC+ajaxfileupload异步上传图片并及时预览

http://www.codeweblog.com/springmvc-ajaxfileupload%E5%BC%82%E6%AD%A5%E4%B8%8A%E4%BC%A0%E5%9B%BE%E7%89%87%E9%A2%84%E8%A7%88-%E8%A3%81%E5%89%AA%E5%B9%B6%E4%BF%9D%E5%AD%98%E5%9B%BE%E7%89%87/

个人实践:

一、对1中的第二种方法的实现:

${pageTitle }

name:

packagecom.leslie.controller;importjava.io.File;importjava.io.IOException;importjava.util.Iterator;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.validation.Valid;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importorg.springframework.stereotype.Controller;importorg.springframework.validation.BindingResult;importorg.springframework.web.bind.WebDataBinder;importorg.springframework.web.bind.annotation.InitBinder;importorg.springframework.web.bind.annotation.ModelAttribute;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.ResponseBody;importorg.springframework.web.multipart.MultipartFile;importorg.springframework.web.multipart.MultipartHttpServletRequest;importorg.springframework.web.multipart.commons.CommonsMultipartResolver;importorg.springframework.web.servlet.ModelAndView;importcom.leslie.User;

@Controller

@RequestMapping("/workConfig")public classSJWorkConfigController {private Logger log = LoggerFactory.getLogger(SJWorkConfigController .class);

@RequestMapping(value= "/upload")publicModelAndView upload(@Valid @ModelAttribute User user, BindingResult br, HttpServletRequest request,

HttpServletResponse response)throwsIllegalStateException, IOException {//创建一个通用的多部分解析器

CommonsMultipartResolver multipartResolver = newCommonsMultipartResolver(

request.getSession().getServletContext());//判断 request 是否有文件上传,即多部分请求

if(multipartResolver.isMultipart(request)) {//转换成多部分request

MultipartHttpServletRequest multiRequest =(MultipartHttpServletRequest) request;//取得request中的所有文件名

Iterator iter =multiRequest.getFileNames();while(iter.hasNext()) {//记录上传过程起始时的时间,用来计算上传时间//int pre = (int) System.currentTimeMillis();//取得上传文件

MultipartFile file =multiRequest.getFile(iter.next());if (file != null) {//取得当前上传文件的文件名称

String myFileName =file.getOriginalFilename();//如果名称不为“”,说明该文件存在,否则说明该文件不存在

if (myFileName.trim() != "") {

System.out.println(myFileName);//重命名上传后的文件名

String fileName = "demoUpload" +file.getOriginalFilename();//定义上传路径

String path = "E:/test/" +fileName;

File localFile= newFile(path);

file.transferTo(localFile);

}

}//记录上传该文件后的时间//int finaltime = (int) System.currentTimeMillis();//System.out.println(finaltime - pre);

}

}

ModelAndView mv= newModelAndView();

mv.addObject("message", request.getParameter("name").toString());

mv.setViewName("hello");returnmv;

}//@RequestMapping(value = "/upload")//public ModelAndView upload(DefaultMultipartHttpServletRequest request) {//CommonsMultipartFile file = (CommonsMultipartFile)//request.getFile("file");// //这里的file就是前台页面的name//if (file.isEmpty()) {//return null;//}// //获取路径,生成完整的文件路径//String fileName = "E:/test/"+"demoUpload" + file.getOriginalFilename();//File uploadFile = new File(fileName);//try {// //上传//FileCopyUtils.copy(file.getBytes(), uploadFile);//} catch (IOException e) {//e.printStackTrace();//}//ModelAndView mv = new ModelAndView();//mv.addObject("message",request.getParameter("name").toString());//mv.setViewName("hello");//return mv;//}

}

1、1中的方法比较通用,且一次能上传多个文件。

2、虽然request的类型是MultipartHttpServletRequest,但仍可继续使用request.getParameter来正常取表单中的非Multipart内容,

这样就可以将图片和普通表单内容一次提交了。

二、对3中方法的实现

注:3文中不但实现了图片上传和预览,并且有使用js切图的功能。由于我使用java在后台切图,所以只使用了它的文件上传预览功能。

前台页面代码:

${pageTitle }

font-family: "微软雅黑";

color: #F30;

}

${currentMenuDesc }

class="tableDivTitleButtonDivButton" value="返回" />

${pageTitle }
作品名称:
作品说明:

path="worksRemark" />

作品图1:

作品图2:

path="worksImg2" />

作品图3:

path="worksImg3" />

App.init();//initlayout and core plugins

});

var file= $("#realPicFile").val();if(!/\.(gif|jpg|jpeg|png|JPG|PNG)$/.test(file)){

Error("不支持的图片格式.图片类型必须是.jpeg,jpg,png,gif格式.");return false;

}

$.ajaxFileUpload({

url :'${pageContext.request.contextPath}/workConfig/uploadOnePic?inputId=realPicFile',

secureuri :false,

fileElementId :'realPicFile',

dataType :'content',

success : function(data, status){

$("#realPic").attr("src", data);

},

error : function(data, status, e){

alert(e);//Error(e);

}

});return false;

}

后台controller代码(不包括切图):

packagecom.leslie.controller;importjava.io.File;importjava.io.IOException;importjava.util.Iterator;importjava.util.List;importjavax.annotation.Resource;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.validation.Valid;importorg.apache.commons.lang3.exception.ExceptionUtils;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importorg.springframework.stereotype.Controller;importorg.springframework.validation.BindingResult;importorg.springframework.web.bind.WebDataBinder;importorg.springframework.web.bind.annotation.InitBinder;importorg.springframework.web.bind.annotation.ModelAttribute;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RequestParam;importorg.springframework.web.bind.annotation.ResponseBody;importorg.springframework.web.multipart.MultipartFile;importorg.springframework.web.multipart.MultipartHttpServletRequest;importorg.springframework.web.multipart.commons.CommonsMultipartResolver;importorg.springframework.web.servlet.ModelAndView;importcom.leslie.model.DesignerWorks;importcom.leslie.model.MemberDesigner;importcom.leslie.model.User;importcom.leslie.service.DesignerService;importcom.leslie.util.ConstantsUtil;importcom.leslie.validator.DesignerWorksValidator;

@Controller

@RequestMapping("/workConfig")public classSJWorkConfigController {

@RequestMapping("/uploadOnePic")

@ResponseBodypublicString fileUpload(String inputId, MultipartHttpServletRequest request) {try{

MultipartFile realPicFile=request.getFile(inputId);if (realPicFile != null) {//取得当前上传文件的文件名称

String myFileName =realPicFile.getOriginalFilename();//如果名称不为“”,说明该文件存在,否则说明该文件不存在

if (myFileName.trim() != "") {

System.out.println(myFileName);//重命名上传后的文件名

String fileName = "demoUpload" +realPicFile.getOriginalFilename();//定义上传路径

String path = "D:/program files/apache-tomcat-8.0.33/webapps/Public/upload/images/" +fileName;

String pathReturn= "/Public/upload/images/" +fileName;

File localFile= newFile(path);

realPicFile.transferTo(localFile);returnpathReturn;

}

}

}catch(Exception e) {//LOG.error("upload header picture error : ", e);

}return null;

}

}

过程概述:用户点选了文件选择器的按钮以后,浏览器弹出选择文件的对话框,当用户选定了某张图片并确定以后,会触发文件选择器的onchange事件,我们在onchange事件里调用ajaxfileupload将文件选择器

选中的文件提交到后台处理,后台通过request拿到文件以后,可以裁剪,可以保存,可以做很多事情,然后将保存以后的文件的url路径返回给前台ajaxfileupload,ajaxfileupload拿到文件路径以后,将页面中

相应的img标签的src属性改成文件路径,然后这张图片就在页面中显示出来了。

说明:

1、ajaxfileupload的功能只是将文件提交到后台,真正对图片进行保存、裁切等处理的还是后台程序。

2、ajaxfileupload的dataType属性一般为"json",但我在使用json类型时报错,后台返回给前台数据以后走到了error分支,弹出“syntexError:unexpeted token”。网上搜了一下,有高人通过修改

java实现文件上传预览_jsp+springmvc实现文件上传、图片上传和及时预览图片相关推荐

  1. java上传头像插件_JSP+SpringMVC框架使用WebUploader插件实现注册时候头像图片的异步上传功能...

    一.去官网下载webuploader文件上传插件 下载好后把它放到Javaweb项目的文件夹中(我放到了webcontent下面的static里面) 二.复制前端的样式 把这段代码放到你想要放到的位置 ...

  2. html网页上传到服务器_JSP+Servlet实现文件上传到服务器功能

    本文实例为大家分享了JSP+Servlet实现文件上传到服务器功能的具体代码,供大家参考,具体内容如下 项目目录结构大致如下: 正如我在上图红线画的三个东西:Dao.service.servlet 这 ...

  3. 创建文件、文件上传下载、发送邮件附件以及文件点击预览功能(超详细注解)

    根据模板生成文件 @Overridepublic File exportStuFileExcelNew(Studengt student, Page<StuFile> page)throw ...

  4. JAVA实现一个图片上传预览功能

    这个小项目主要使用java实现了一个简单的图片上传预览功能,废话不多说,先上实现成果 ^ _ ^

  5. 【微信小程序】小程序实现文件的上传及预览,以PDF文件为例。

    安卓系统和ios系统 一开始被一篇ios预览PDF文件需要用到webview的博客给误导了,以为安卓预览文件需要调用wx.downloadFile()和wx.openDocument()这两个API, ...

  6. php 文件预览 水印,PHP图片上传,预览图上传,水印设置

    //设置图片的存放目录 设置水印的存放地址如果愿意,可以给预览图.上传图片分设不同的存储地址 $img_path = $_SERVER['DOCUMENT_ROOT']."/data/img ...

  7. java中上传图片的原理_js实现图片上传预览原理分析

    目前网上有很多支持图片上传时进行预览的插件,功能完备,界面优雅,使用起来也很方便.一直以来也就只是用用,没有想过这些插件背后的实现原理.趁着今天有点时间,也来学习学习. 追根溯源 设想 一开始,按照我 ...

  8. php上传头像的代码,php实现文件上传及头像预览功能

    php文件上传原理是通过form表单的enctype="multipart/form-data"属性将文件临时放到wamp文件夹中的tmp目录下,再通过后台php程序将文件保存在体 ...

  9. JAVA微信公众号开发第8篇JSSDK图片上传预览

    简介 博主微信JSSDK&图片上传预览基于微信分享做拓展,所以一些配置操作请点击查阅JAVA微信公众号开发第7篇JSSDK&微信分享博文 页面 <html><head ...

最新文章

  1. 数据库定时导出和互备一例
  2. jQ复制按钮的插件zclip
  3. android和ios系统的内存,WP和Saipan系统的流畅程度相当于ios,占用的内存很少,但是为什么要用Android取代它...
  4. 页面滚动效果库,有点儿皮!
  5. 经典面试题(26):以下代码将输出的结果是什么?
  6. zk4元年拆解_科比5 Protro开箱测评 zk5元年拆解赏析
  7. arm 基于qcamera实现_面向HPC和笔记本市场 ARM发Cortex A78C增强版
  8. 使用Faster_RCNN做文本检测
  9. 力扣-1046 最后一块石头的重量
  10. 成为JavaGC专家Part II — 如何监控Java垃圾回收机制
  11. Python包和模块的区别
  12. Java程序设计实验三 面向接口编程
  13. java ipv6转换成ipv4,如何映射IPv4的IPv6地址转换为IPv4(字符串格式)?
  14. 广义相对论与狭义相对论的区别
  15. 网易人工智能事业部:“悄无声息”再捞金!
  16. 提升执行力,小米手环打造TODO神器
  17. tomcat 配置 数据库连接池
  18. httpServer / proxyServer / nginx 1.7.9
  19. 维深集团荣获2004年物流与采购信息化优秀方案大奖
  20. Windows下双网卡配置静态路由,实现内外网同时使用

热门文章

  1. 014 Python语法之类与对象
  2. RHCSA之路----全
  3. linux命令shell执行
  4. 腾讯合并搜狗、快手切换姿态入场,前后浪走向搜索新战场
  5. 11_林业三维可视化
  6. oracle函数将多级标签逗号拼接的单个字段洗涤成仅含一级标签的字段
  7. h3c服务器u盘启动装linux系统,h3c服务器装Linux系统
  8. 加密/解密 公钥/私钥
  9. Python-3反爬虫原理与绕过实战
  10. 网站关键词怎么写好(网站标题,关键词,描述书写技巧)