项目中会经常实现文件上传功能,比如在前台页面中设置上传文件按钮,后台保存文件至服务器,操作完成后前台展示上传结果,如上传成功或者上传失败信息。使用MultipartFile可以很容易的实现文件上传功能。

使用spring的MultipartFile上传文件时,后台java代码中引入该类

import org.springframework.web.multipart.MultipartFile;

1 html页面中设置上传图片按钮

在前台页面中需要设置上传按钮,如下代码所示,我们将文件按钮放在一个form中,当提交的时候,form会按action中的值提交到服务器端的方法,这里的enctype类型设置为 multipart/form-data 格式。callback 控件来标识回调的方法

2 js中编写回调方法、表单提交方法

在js方法中,编写回调函数的内容,来处理服务器上传图片后的操作。然后提交form表单,这样from表单内容就提交到服务器中了。

var _fnName = "__uploadCallback" + (newDate()).getTime();

Y.one("#callback").set("value", _fnName);

window[_fnName]= Y.bind(function(result) {if(!result.success) {//显示上传失败的原因等错误信息

}else{//显示上传成功的信息

}

}

Y.one("#backImage").set("action",Y2.meta.rootPath + "/home/print/uploadbackimage.htm");

Y.one("#backImage").submit();

3  服务器保存文件,返回回调结果

服务器接收到表单提交的内容后,首先调用File等文件操作类保存文件到某个目录下,操作完成后,通过响应流来返回回调的内容。@RequestParam(value = "backImageFile", required = false) MultipartFile 中,这里的value需要指明上传文件 type=”file”的name值。

具体代码如下

@RequestMapping(value="/home/print/uploadbackimage",method=RequestMethod.POST)public voidupdateImageHandler(HttpServletRequest request,

@RequestParam(value= "backImageFile", required = false) MultipartFile

backImageFile , HttpServletResponse response){

String callback= ServletRequestUtils.getStringParameter(request, "callback","");

String imgName= "";boolean uploadFlag =保存图片操作后的结果;//向输出流写入内容,并调用回调方法

StringBuffer javaScript= newStringBuffer();

javaScript.append("

javaScript.append(" var reslut = {};\n");if(uploadFlag){

javaScript.append(" reslut.success = true;\n");

}else{

javaScript.append(" reslut.success = false;\n");

javaScript.append(" reslut.message = '上传图片失败!';\n");

}//调用回调方法

javaScript.append(" window.parent." + callback + "(reslut);\n");

javaScript.append("\n");

response.setContentType("text/html;charset=utf-8");

PrintWriter out= null;try{

out=response.getWriter();

out.println(javaScript.toString());

}catch(IOException e) {

e.printStackTrace();

}finally{if(out != null){

out.close();

}

}

}

上述代码中使用了

javaScript.append(" window.parent." + callback + "(reslut);\n");

因为前台页面form的target指向了一个隐藏的 iframe,这样当form提交后响应的流入就会输出到iframe所在的页面中。Window.parent.callback() 就调用了iframe的父窗口中的写的回调方法,这个回调名可以任意。在这个回调方法中就能判断是上传成功了还是上传失败了。

java muti实现图片上传_使用MultipartFile实现文件上传相关推荐

  1. java jsp 文件上传_用JSP编写文件上传

    用JSP编写文件上传 发布时间:2016-09-14 来源: 点击: 次 如果你曾用VB编写文件上传的组件的话,那么用JAVA编写文件上传的JAVABEAN十分容易. 下面的例子只是一个简版 pack ...

  2. angularjs java 文件上传_学习使用AngularJS文件上传控件

    前段时间做项目遇到一个需求是上传文件,大概需要实现的样式是这样子的,见下图: 需要同时上传两个文件.并且规定文件格式和文件大小.因为前端框架使用angular,且不想因为一个上传功能又引入一个jque ...

  3. ie6多文件上传_一个好的“文件上传”功能必须要注意的这些点你都知道吗?

    检查上传文件扩展名白名单,不属于白名单内,不允许上传:[前端和后端都要做好校验] 上传文件的目录必须是http请求无法直接访问到的.如果需要访问的,必须上传到其他(和web服务器不同的)域名下,并设置 ...

  4. antd upload手动上传_基于MVVCTP5的文件上传

    现如今在市面上常见的web开发理念一般是两种,一种是MVC格式的,比较传统,而项目较大的开发,一般由团队完成,而MVC格式就显得有些不够合理 .于是 ,在这种情况下诞生了另外一种开发理念,我们叫MVV ...

  5. themyleaf 图片上传_javaEE --springboot #实现图片上传和回显 #单文件上传 #多文件上传 #ajax异步文件上传 (非常详细,从创建项目开始)...

    实现文件上传和回显 1.新建一个SpringBoot项目,选择 Spring Web 和 thymeleaf 依赖 .pow.xml文件下的依赖如下 2.根据下图,创建如下文件 3.直接上代码 配置文 ...

  6. java web 文件上传_Javaweb学习笔记10—文件上传与下载

    今天来讲javaweb的第10阶段学习.文件的上传与下载,今天主要说的是这个功能的实现,不用说了,听名字就是外行人也知道肯定很重要啦. 老规矩,首先先用一张思维导图来展现今天的博客内容. ps:我的思 ...

  7. springboot 上传文件_基于SpringBoot的文件上传

    在实际的企业开发中,文件上传是最常见的功能之一,SpringBoot集成了SpringMVC常用的功能,当然也包含了文 件上传的功能,实现起来没有太多的区别. 下面我们来讲解一下,使用SpringBo ...

  8. ajaxfileupload 监听上传进度_一篇文章学会文件上传

    文件上传 文件上传原理 文件上传的原理,就是DOM中的FileUpload对象.就是这句 <input type="file"> 但仅仅这样并不足够. 文件上传本质上是 ...

  9. php dw文件上传下载,使用PHP实现文件上传

    这里使用PHP实现文件的上传,由在浏览器这边选择文件,上传到服务器.其中,在上传文件中,考虑到对上传文件大小的限制.类型限制等问题.(当然可以根据我们需要修改对上传的文件的限制,而一般而言php自身也 ...

最新文章

  1. android技术下载
  2. 【DIY】200403近期在做的项目小结,DIY进展汇报
  3. vbseltext_VB编程技巧之selstart, sellength,seltext属性
  4. pycharm python 如何快速给代码块添加try/catch try/finally包裹?【ctrl+alt+T】
  5. Java Web Start入门基础教程
  6. 华为电脑c语言总是错误,关于华为机试题求代码!解决方法
  7. 用js实现导航栏shoufang效果_【读者投稿】用Github+docsify,我花了半天就搭好了个人博客...
  8. 十天学会PHP(第五版),十天学会php之第五天
  9. nmealib解析-----(1)
  10. Swagger启动报错Failed to start bean ‘documentationPluginsBootstrapper‘
  11. C#利用NPOI导出Excel
  12. 数据仓库与数据挖掘课后思考题整理
  13. 美了哭了,AduSkin是我见过最好看的WPF控件库
  14. cad命令栏怎么调出来_中望CAD菜单栏和功能栏都消失怎么办
  15. GAMMA初学笔记二
  16. 2018年需要记住的5个区块链事实
  17. artwork will be rounded down because......
  18. 铁路基因的传承与创新
  19. 关于卷积核大小的论文与思路
  20. java从高位到低位输出_任意输入一个正整数,从高位向低位依次输出,或从低位向高位依次输出(数组,调用函数两种方法)...

热门文章

  1. Nodejs搭建前后端分离开发模式下的微信网页项目
  2. 数学建模对计算机考研有用吗,数学建模有必要参加吗
  3. python3 全局热键_python3注册全局热键的实现
  4. “怀孕后,老公居然背着我做这些事”:有没有嫁对人,看这点就知道了
  5. mysql 手工配置_小姜学网络(MySQL数据库的手工安装与配置)附代码
  6. 新网站关键词优化小技巧
  7. 服务器连接不上的处理方式
  8. MQL4课程-交易函数平仓及修改止损止盈
  9. 【linux3.10】内存反向映射中的anon_vma是per process的吗?
  10. Godaddy域名与腾讯云服务器ip绑定,使用域名访问