`
zhangwei_david
  • 浏览: 474760 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

利用Spring 实现文件上传

阅读更多

      在Spring mvc 中已经封装了common-fileupload,所以在Spring MVC 中实现文件上传是一件相对简单的事情。

  1.  在Spring 的配置文件中配置一个multiparResover Bean 
  2.  在上传文件的表单中将属性enctype 设置问”multipart/form-data”
  3. 实现controller

      

<bean id="multipartResolver"
		class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<property name="maxUploadSize" value="100000000" />
		<property name="defaultEncoding" value="utf-8" />

	</bean>

 

写道
<form name="uploadForm" id="uploadForm" action="$tuitionModule.setTarget('upload.htm')" method="POST" enctype="multipart/form-data">

<div class="tb-table">
<table>
<tr>
<td width="20%"></td>
<td width="30%"><span class="btn"><input type="file" name="uploadFile" id="uploadFile" /></span></td>
<td><span class="btn"><input type="submit" value="导入数据" id="btn-primary"></span></td>
</tr>

</table>
</div>
</form>

 

写道
public class FileUploadController {

private static final Logger logger = LoggerFactory
.getLogger(FileUploadController.class);
@Autowired
private MultipartFileValidator multipartFileValidator;

@Autowired
private TuitionPropertyParser tuitionPropertyParser;

@OsgiReference
private TuitionOrderServiceClient tuitionOrderServiceClient;

/**文件上传的默认根目录**/
private static final String default_parent_dir = "/home/admin/sharedata/upload/ipay/tuition/paybang/";

@RequestMapping(value = "/upload.htm", method = RequestMethod.GET)
public String showUploadPageI(Model model) {
return TuitionConstants.UPLOAD_PAGE;
}

@RequestMapping(value = "/upload.htm", method = RequestMethod.POST)
public String upload(@RequestParam("uploadFile") MultipartFile uploadFile,
HttpServletRequest request, Model model) {
// 如果文件不为空
if (multipartFileValidator.validate(uploadFile)) {
try {
String fileName = uploadFile.getOriginalFilename();
String dest = default_parent_dir
+ DateUtil.format(new Date(), DateUtil.shortFormat) + "/" + fileName;
// 判断文件是否存在,不允许上传重复文件
if (new File(dest).exists()) {
throw new AlipayRuntimeException("重复文件上传");
}
//将解析文件的结果返回
List<TuitionOrderModel> orders = tuitionPropertyParser.parser(uploadFile
.getInputStream(), dest, OperationContextHolder.getPrincipal().getUserId());
// 保存数据失败
if (!tuitionOrderServiceClient.saveOrders(orders)) {
model.addAttribute(TuitionConstants.KEY_ERROR_MSG, "数据落地异常");
logger.error("未能够成功保存数据");
return TuitionConstants.UPLOAD_PAGE;
}
model.addAttribute(TuitionConstants.KEY_ITEMS, orders);
model.addAttribute("fileName", dest);
// 复制文件
copyFile(uploadFile, dest);
} catch (Exception e) {
model
.addAttribute(TuitionConstants.KEY_ERROR_MSG,
"上传文件异常,文件名称是:" + uploadFile.getOriginalFilename() + "(" + e.getMessage()
+ ")");
logger.error("上传文件异常", e);
return TuitionConstants.UPLOAD_PAGE;
}
} else {
// 上传文件为空
model.addAttribute("errorMsg", "上传文件异常,文件为空或者文件格式不正确,目前支持的文件格式为:"
+ multipartFileValidator.getAllowedTypes());
}
return TuitionConstants.UPLOAD_PAGE;
}

/**
* 将上传的文件上传到指定的目录下
*
* @param uploadFile 上传的文件
* @param dest 目的地
* @throws IOException
*/
private void copyFile(MultipartFile uploadFile, String dest) throws IOException {
byte[] bytes = uploadFile.getBytes();
File filePath = new File(dest);
if (!filePath.getParentFile().exists()) {
filePath.getParentFile().mkdirs();
}
FileCopyUtils.copy(bytes, filePath);
}
}

 

分享到:
评论

相关推荐

    spring实现文件上传下载

    下面将详细阐述如何利用Spring MVC来实现这两个功能。 一、文件上传 1. 配置MultipartResolver:Spring MVC默认使用CommonsMultipartResolver来处理多部分(multipart)请求,也就是文件上传。首先,在Spring的...

    springcloud处理文件上传

    这样,我们便成功地在Spring Cloud环境中实现了文件上传功能,同时利用了Feign的声明式调用和Zuul的路由与负载均衡能力。 总的来说,通过Spring Cloud的组件,我们可以构建一个高效且可扩展的文件上传系统,它具有...

    jersey+spring+srpingmvc实现上传

    【标题】:“jersey+spring+...通过这个示例,开发者可以了解到如何利用Java生态系统中的这些流行框架来实现文件上传功能,并为自己的项目提供参考。同时,理解并实践这些知识点,也有助于提升对Web开发的整体理解。

    struts1 + hibernate + spring 实现文件上传

    在"struts1 + hibernate + spring 实现文件上传"的场景中,我们将讨论如何利用这些技术来实现用户端文件的上传功能。 **Struts1** 是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它简化了开发...

    Spring MVC实现文件的上传和下载

    在本文中,我们将深入探讨如何利用Spring MVC实现在Web应用中进行文件的上传与下载。 首先,我们需要理解Spring MVC中的两个核心组件:Model、View和Controller。Controller接收用户请求,处理业务逻辑,然后将结果...

    利用Javabean+JSP 实现文件的上传、显示、下载

    JSP页面上,使用`&lt;form&gt;`标签设置`enctype="multipart/form-data"`,并将提交动作指向处理文件上传的Javabean方法。 2. **文件显示**: 显示文件列表通常涉及到数据库操作,因为文件路径和元数据可以存储在数据库...

    Spring MVC 文件上传下载 后端 - Java.zip

    6. **优化**:为了提高性能,可以使用异步处理文件上传和下载,利用Spring MVC的AsyncController或者Servlet 3.0的异步处理特性。另外,对于大文件操作,可以考虑分块上传和下载。 7. **实际应用场景**:这些功能...

    spring mvc ajax异步文件的上传和普通文件上传

    在Spring MVC框架中,文件上传是一项常见的功能,无论是普通的文件上传还是通过Ajax实现的异步文件上传,都为用户提供了更好的交互体验。本篇将详细讲解这两种方式的实现原理及步骤。 首先,让我们来理解一下普通...

    java spring +flex实现文件上传

    下面将详细介绍如何利用这两个技术栈来实现文件上传功能。 1. **Spring MVC 文件上传** Spring MVC是Spring框架的一部分,它提供了处理HTTP请求,包括文件上传的能力。要实现文件上传,首先需要在Spring的配置文件...

    springboot 项目实现文件上传,显示,下载,打包为jar

    这里我们将深入探讨如何在Spring Boot项目中实现文件上传、显示和下载,并将其打包为可执行的JAR文件。 首先,文件上传通常涉及到接收用户通过HTTP请求提交的文件。在Spring Boot中,我们可以利用`MultipartFile`...

    SpringBoot 实现文件上传到本地目录 并返回可访问的文件地址.rar

    本项目的核心是利用Spring Boot的MVC特性来处理文件上传请求,以及构建一个安全、可靠且易于访问的文件服务。下面我们将详细探讨这个过程中的关键知识点。 1. **Spring Boot MVC**: Spring Boot MVC是Spring框架...

    ajaxupload在spring mvc4.2中实现简单文件上传

    在Spring MVC 4.2框架中实现AjaxUpload(异步文件上传)是一个常见的需求,它允许用户在不刷新整个页面的情况下进行文件上传,提供更好的用户体验。以下是对这一主题的详细阐述: 1. **AjaxUpload简介**: Ajax...

    springmvc+hadoop+maven实现文件上传至hdfs

    在本实例中,SpringMVC作为前端控制器,接收用户的文件上传请求,处理业务逻辑,并将结果返回给用户。开发者可以定义各种控制器方法来处理特定的HTTP请求,比如一个用于处理文件上传的`@RequestMapping`注解的方法。...

    Struts+Spring+Hibernate实现上传下载.

    同时,可以利用Spring的事务管理确保文件保存成功,再更新与文件相关的数据库记录。 文件下载则是反向的过程。当用户请求下载文件时,服务器根据请求参数查询数据库获取文件信息,然后读取文件内容,设置响应头信息...

    Java Spring文件上传,Java文件上传,Java通用文件上传

    在Java Spring框架中,文件上传是一项常见的功能,用于...以上就是关于Java Spring文件上传的基本介绍和实现步骤。在实际项目中,还需要根据具体需求进行优化和扩展,比如添加文件预览、文件类型检查、错误处理等功能。

    SpringCloud大文件分片断点上传实现原理

    SpringCloud大文件分片断点上传实现原理是指在云计算平台上实现大文件的分片断点上传,主要解决了大文件上传的几个关键问题,如上传速度、上传可靠性、上传安全性等。该技术方案主要包括三个部分:文件上传、OSS...

    Spring文件上传和下载所需的jar包.rar

    这样,你就可以在Spring中轻松地实现文件上传和下载的功能,同时利用Apache Commons库提供的强大功能提高代码的可维护性和效率。记住,处理文件上传时一定要注意文件安全,比如验证文件类型、限制文件大小、避免路径...

    spring mvc+ajax 导出导入xml文件功能实现和整理

    另外,Ajax在处理文件上传时,虽然不能直接处理multipart/form-data编码,但借助FormData对象可以很好地解决这个问题,让开发者能够利用Ajax的便利性同时实现文件的上传功能。 文档中还提到了一些技术细节,如...

    spring mvc 上传文件显示进度

    下面将详细介绍如何利用Spring MVC实现这一功能。 首先,我们需要了解Spring MVC中的MultipartFile接口,这是处理文件上传的核心。当你在表单中使用`&lt;input type="file" /&gt;`时,服务器端的Controller可以通过...

    springboot+vue实现超大文件分片极速上传与下载完整前后端源码

    在这个项目中,Spring Boot作为后端服务提供者,主要负责处理文件上传、分片、存储以及下载请求。它利用RESTful API设计,使前后端能进行高效通信。 其次,Vue.js是一个轻量级的前端JavaScript框架,用于构建用户...

Global site tag (gtag.js) - Google Analytics