Spring MVC中上传文件实例_JSP编程

SpringMVC(注解)上传文件需要注意的几个地方:
1、form的enctype="multipart/form-data",这个是上传文件必须的
2、applicationContext.xml配置:

复制代码 代码如下:

<!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="defaultEncoding" value="UTF-8"/>
    <!-- 指定所上传文件的总大小不能超过200KB。注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 -->
    <property name="maxUploadSize" value="200000"/>
    <!-- 最大内存大小 (10240)-->
    <property name="maxInMemorySize" value="40960" />
</bean>
  
<!-- SpringMVC在超出上传文件限制时,会抛出org.springframework.web.multipart.MaxUploadSizeExceededException -->
<!-- 该异常是SpringMVC在检查上传的文件信息时抛出来的,而且此时还没有进入到Controller方法中 -->
<bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
    <property name="exceptionMappings">
        <props>
            <!-- 遇到MaxUploadSizeExceededException异常时,自动跳转到/WEB-INF/jsp/error_fileupload.jsp页面 -->
            <prop key="org.springframework.web.multipart.MaxUploadSizeExceededException">error_fileupload</prop>
        </props>
    </property>
</bean>

用于上传的表单页面/WEB-INF/jsp/upload.jsp

复制代码 代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <script type="text/javascript" src="../js/jquery-1.7.1.min.js"></script>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>上传图片</title>
    </head>
    <body>
        <form action="<%=request.getContextPath()%>/upload/filesUpload" method="POST" enctype="multipart/form-data">
            yourfile: <input type="file" name="myfiles"/><br/>
            yourfile: <input type="file" name="myfiles"/><br/>
            <input type="submit" value="上传图片"/>
        </form>
    </body>
</html>

上传文件内容过大时的提示页面/WEB-INF/jsp/error_fileupload.jsp

复制代码 代码如下:

<%@ page language="java" pageEncoding="UTF-8"%>
<h1>文件过大,请重新选择</h1>

上传文件的核心UploadController类

复制代码 代码如下:

package com.ljq.web.controller.annotation;
 
import java.io.File;
 
import javax.servlet.http.HttpServletRequest;
 
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;
 
/**
 * 上传图片
 *
 * @author Administrator
 *
 */
@Controller
@RequestMapping("/upload")
public class UploadController {
 
    @RequestMapping("/toUpload")
    public String toUpload() {
        return "/upload";
    }
 
    /***
     * 保存文件
     *
     * @param file
     * @return
     */
    private boolean saveFile(HttpServletRequest request, MultipartFile file) {
        // 判断文件是否为空
        if (!file.isEmpty()) {
            try {
                // 保存的文件路径(如果用的是Tomcat服务器,文件会上传到\\%TOMCAT_HOME%\\webapps\\YourWebProject\\upload\\文件夹中  )
                String filePath = request.getSession().getServletContext()
                    .getRealPath("/") + "upload/" + file.getOriginalFilename();
                File saveDir = new File(filePath);
                if (!saveDir.getParentFile().exists())
                    saveDir.getParentFile().mkdirs();
                
                // 转存文件
                file.transferTo(saveDir);
                return true;
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return false;
    }
 
    /**
     * 上传图片
     *
     * @param files
     * @param request
     * @return
     */
    @RequestMapping("/filesUpload")
    public String filesUpload(@RequestParam("myfiles") MultipartFile[] files,
            HttpServletRequest request) {
        if (files != null && files.length > 0) {
            for (int i = 0; i < files.length; i++) {
                MultipartFile file = files[i];
                // 保存文件
                saveFile(request, file);
            }
        }
        
        // 重定向
        return "redirect:/upload/toUpload";
    }
 
}

到此文件上传开发就结束了。

MultipartFile类常用的一些方法:
String getContentType() //获取文件MIME类型
InputStream getInputStream() //返回文件流
String getName() //获取表单中文件组件的名字
String getOriginalFilename() //获取上传文件的原名
long getSize() //获取文件的字节大小,单位byte
boolean isEmpty() //是否为空
void transferTo(File dest) //保存到一个目标文件中

时间: 2024-09-23 02:59:48

Spring MVC中上传文件实例_JSP编程的相关文章

基于jsp的AJAX多文件上传的实例_JSP编程

最近的项目开发中,遇到了一个多文件上传的问题,即在不刷新页面的情况下,上传多个文件至服务器.现总结分享如下: 本文主要采用了基于jsp的ajax,jquery,servlet等技术. 1.upload.jsp 点击上传时,调用对应的fileupload函数,通过ajax将文件异步传送到servlet中处理.注意在文件上载时,所使用的编码类型应当是"multipart/form-data",它既可以发送文本数据,也支持二进制数据上载. <%@ page language="

用fileupload组件实现的大文件上传简单实例_JSP编程

1.FileUploadServlet.java文件,实现上传处理 import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.text.DecimalFormat; import java.util.Iterator; import java.util.List; import javax.servlet.ServletException; import javax.servl

Spring MVC 上传文件(upload files)

上传功能是一个web应用很常用的一个功能,比如在一些社交网站上传些图片.视频等.本篇文章主要研究了spring mvc是如何实现文件上传功能的,在具体讲解spring mvc如何实现处理文件上传之前,必须弄明白与文件上传相关的multipart请求. 一.关于multipart 请求 我们传统的表单提交的一般都是文本类型的数据,比如我们的注册表单,当提交表单时,表单中的"属性-值"对会被拼接成一个字符串: firstName=Charles&lastName=Xavier&am

spring MVC上传文件

spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方 1.form的enctype="multipart/form-data" 这个是上传文件必须的 2.applicationContext.xml中 关于文件上传的配置不能少 大家可以看具体代码如下: web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://w

在PHP.MVC中上传文件

PHP.MVC官方网站上介绍的是使用PEAR::HTTP_Upload 包来处理上传,而我只是用原始的方式来进行上传的处理,主要是为了说明在MVC的框架中怎样上传文件.以后我可能会使用PEAR::HTTP_Upload 包来做. 1.打开phpmvc-config.xml,在<phpmvc-config>标签中加上: <controller maxFileSize="1048576" tempDir="C:\www\upload\"><

spring mvc上传文件,文件上传到webroot下,不要发布到保存tomcat下,求解决,在线等待

问题描述 上传的文件我要保存在WebRoot/resources/uploadfile里面,我不要发布保存在D:apache-tomcat-7.0.53webapps下,怎么解决,老保存到tomcat下呢?怕文件丢失 解决方案 解决方案二:上传的时候你指定路径啊.解决方案三:问题是指定的路径始终是tomcat下的,我不要在tomcat下的解决方案四: 解决方案五:引用3楼rui888的回复:恩,这是绝对写死的路径,也是一个方法,但不灵活解决方案六:那你就代码写路径.解决方案七:引用5楼rui88

JSP读取文件实例_JSP编程

//变量声明 java.lang.String strFileName; //文件名 java.io.File objFile; //文件对象 java.io.FileReader objFileReader; //读文件对象 char[] chrBuffer = new char[10]; //缓冲 int intLength; //实际读出的字符数(一个中文为一个字符)  //设置待读文件名 strFileName = "d:\\test.txt";  //创建文件对象 objFi

Java Spring MVC 上传下载文件配置及controller方法详解_java

下载: 1.在spring-mvc中配置(用于100M以下的文件下载) <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <!--配置下载返回类型--> <bean class="or

解读PHP中上传文件的处理问题_php实例

我们在浏览器中编辑自己的信息,会遇到上传头像:在文库中,我们会上传文档......到处存在"上传"这个词. php是最好的语言(其他语言的程序猿们不要打我...).php在处理交互方面有天然的优势,自然有强大的函数来处理上传文件. 和提交一般的数据一样,上传文件也需要表单.下面建立一个特殊的表单来上传文件. <form enctype="multipart/form-data" action="upload_file.php" name=&