博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring MVC文件上传
阅读量:6829 次
发布时间:2019-06-26

本文共 2229 字,大约阅读时间需要 7 分钟。

转自:http://www.cnblogs.com/fangqi/archive/2012/10/28/2743100.html

Spring MVC为文件上传提供了直接的支持,这种支持是通过即插即用的MultipartResolver实现的。Spring使用Jakarta Commons FileUpload 技术实现了一个MultipartResolver实现类:CommonsMultipartResolver。

Spring MVC上下文中默认没有装配MultipartResolver,因此默认情况下不能处理文件的上传工作。如果想要使用Spring的文件上传功能,需要先在上下文中配置MultipartResolver。

第一步:配置MultipartResolver

使用CommonsMultipartResolver配置一个MultipartResolver解析器:

defaultEncoding必须和用户JSP的pageEncoding属性一致,以便正确读取表单的内容。uploadTempDir是文件上传过程所使用的临时目录,文件上传完成后,临时目录中的临时文件会被自动清除。

第二步:编写文件上传表单页面和控制器

JSP页面如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>          My JSP 'index.jsp' starting page    

选择上传文件

文件名:

注意:负责上传的表单和一般表单有一些区别,表单的编码类型必须是"Multipart/form-data"

控制器UserController如下:

package com.web;import java.io.File;import java.io.IOException; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; @Controller @RequestMapping(value = "/user") public class UserController { @RequestMapping(value = "/upload.do") public String updateThumb(@RequestParam("name") String name, @RequestParam("file") MultipartFile file) throws IllegalStateException, IOException { if (!file.isEmpty()) { file.transferTo(new File("d:/temp/" + name + file.getOriginalFilename().substring( file.getOriginalFilename().lastIndexOf(".")))); return "redirect:success.html"; } else { return "redirect:fail.html"; } } }

Spring MVC会将上传文件绑定到MultipartFile对象中。MultipartFile提供了获取上传文件内容、文件名等内容,通过transferTo方法还可将文件存储到硬件中,具体说明如下:

  1. byte[] getBytes() :获取文件数据 
  2. String getContentType():获取文件MIME类型,如image/pjpeg、text/plain等
  3. InputStream getInputStream():获取文件流
  4. String getName():获取表单中文件组件的名字
  5. String getOriginalFilename():获取上传文件的原名
  6. long getSize():获取文件的字节大小,单位为byte
  7. boolean isEmpty():是否有上传的文件
  8. void transferTo(File dest):可以使用该文件将上传文件保存到一个目标文件中

转载于:https://www.cnblogs.com/sharpest/p/7712018.html

你可能感兴趣的文章
BZOJ2434:[NOI2011]阿狸的打字机——题解
查看>>
BZOJ - 3963: [WF2011]MachineWorks
查看>>
第5件事 做一个有taste的产品人
查看>>
暂时记录
查看>>
MicroPython开发之物联网快速开发板
查看>>
Mysql分布式部署高可用集群方案
查看>>
PHP中常用的输出语句比较?
查看>>
windows下oracleSQLDevelpment连接ORA-12560解决办法
查看>>
android&nbsp;setBackgroundColor
查看>>
UVa11181 条件概率
查看>>
第一个Polymer应用 - (3)使用数据绑定
查看>>
<Linux> xm 命令
查看>>
linux 常用命令
查看>>
ecna 2017 J Workout for a Dumbbell (模拟)
查看>>
用Quick3.3开发微信打飞机 (二) -------------------- 子弹和敌人的配置和创建
查看>>
Tui-x 自适应屏幕 (转) ----- 6
查看>>
[转载] C#中的委托和事件(续)
查看>>
解题思路
查看>>
AngularJS - Apply方法监听model变化
查看>>
linux_密钥
查看>>