zoukankan      html  css  js  c++  java
  • Spring 3 MVC File Upload, Spring MVC File Upload

    In this tutorial we are going to create annotation based file upload example using Spring 3.0 MVC module.

    Spring 3 MVC File Upload

    Creating file upload example using Spring 3 MVC

    Learn how to create file upload application using Spring MVC module of the Spring 3 framework.

    In this tutorial we are going to create annotation based file upload example using Spring 3.0 MVC module. In this tutorial we are creating file upload code and then use Eclipse IDE and tomcat to run the application.

    Create a project in spring and add the files are libraries provided in the download of this example.  You can also download the code and then import in Eclipse IDE.

    In this the file upload example project following jar files are needed:

    Jar Files :

    All the above jar files are available in the example code zip file. We have give the download link at the end of this tutorial.

    This tutorial applied  following steps :

    Step 1 :

    First we create  Dynamic  web project  "Spring3Example". Now we create index.jsp file under WebContent folder. The code of  index.jsp are given as:

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"

    pageEncoding="ISO-8859-1"%>

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">

    <html>

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

    <title>Spring 3, MVC Examples</title>

    </head>

    <body>

    <h1>Spring 3, MVC Examples</h1>

    <ul>

    <li><a href="forms/uploadfileindex.html">File Upload</a></li>

    </ul>

    </body>

    </html>

    Step 2 :

    Now  create "UploadItem.java"  under src folder. The  UploadItem.java use the two variable

    1.filename

    2. fileData.

        Code of  "UploadItem.java"  is given below as:


    package net.roseindia.form;

    import org.springframework.web.multipart.commons.CommonsMultipartFile;

    public class UploadItem {
            private String filename;
            private CommonsMultipartFile fileData;

            public String getFilename() {
                    return filename;
            }

            public void setFilename(String filename) {
                    this.filename = filename;
            }

            public CommonsMultipartFile getFileData() {
                    return fileData;
            }

            public void setFileData(CommonsMultipartFile fileData) {
                    this.fileData = fileData;
            }
    }

    Step 3 :

    Now create  "UploadFileIndexController.java"  under src folder. The code of  "UploadFileIndexController.java" are given below as :

     package net.roseindia.controllers;

    import java.util.Map;
    import org.springframework.stereotype.Controller;
    import org.springframework.validation.BindingResult;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;

    @Controller
    @RequestMapping("/uploadfileindex")
    public class UploadFileIndexController {

            // Display the form on the get request
            @RequestMapping(method = RequestMethod.GET)
            public String showRegistration(Map model) {
                    return "uploadfileindex";
            }

            // Process the form.
            @RequestMapping(method = RequestMethod.POST)
            public String processRegistration(BindingResult result) {
                    return "uploadfileindex";
            }
    }

    Step 4 :

    Now  create "UploadFileController.java"  file under src folder.  "UploadFileController.java"  use for  the file upload and save in images folder. The  code of  "UploadFileController.java"  is given below:

     package net.roseindia.controllers;

    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.ui.Model;
    import org.springframework.validation.BindingResult;
    import org.springframework.validation.ObjectError;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    import javax.servlet.ServletConfig;
    import java.io.FileOutputStream;

    import java.io.InputStream;
    import java.io.OutputStream;
    import javax.servlet.http.*;
    import net.roseindia.form.UploadItem;
    import org.springframework.web.multipart.MultipartFile;

    @Controller
    @RequestMapping(value = "/uploadfile")
    public class UploadFileController {
            private String uploadFolderPath;
            ServletConfig config;

            public String getUploadFolderPath() {
                    return uploadFolderPath;
            }

            public void setUploadFolderPath(String uploadFolderPath) {
                    this.uploadFolderPath = uploadFolderPath;
            }

            @RequestMapping(method = RequestMethod.GET)
            public String getUploadForm(Model model) {
                    model.addAttribute(new UploadItem());
                    return "/uploadfile";
            }

            @RequestMapping(method = RequestMethod.POST)
            public String create(UploadItem uploadItem, BindingResult result,
                            HttpServletRequest request, HttpServletResponse response,
                            HttpSession session) {
                    if (result.hasErrors()) {
                            for (ObjectError error : result.getAllErrors()) {
                                    System.err.println("Error: " + error.getCode() + " - "
                                                    + error.getDefaultMessage());
                            }
                            return "/uploadfile";
                    }

                    // Some type of file processing...
                    System.err.println("-------------------------------------------");
                    try {
                            MultipartFile file = uploadItem.getFileData();
                            String fileName = null;
                            InputStream inputStream = null;
                            OutputStream outputStream = null;
                            if (file.getSize() > 0) {
                                    inputStream = file.getInputStream();
                                    if (file.getSize() > 10000) {
                                            System.out.println("File Size:::" + file.getSize());
                                            return "/uploadfile";
                                    }
                                    System.out.println("size::" + file.getSize());
                                    fileName = request.getRealPath("") + "/images/"
                                                    + file.getOriginalFilename();
                                    outputStream = new FileOutputStream(fileName);
                                    System.out.println("fileName:" + file.getOriginalFilename());

                                    int readBytes = 0;
                                    byte[] buffer = new byte[10000];
                                    while ((readBytes = inputStream.read(buffer, 0, 10000)) != -1) {
                                            outputStream.write(buffer, 0, readBytes);
                                    }
                                    outputStream.close();
                                    inputStream.close();
                            }

                            // ..........................................
                            session.setAttribute("uploadFile", file.getOriginalFilename());
                    } catch (Exception e) {
                            e.printStackTrace();
                    }
                    return "redirect:/forms/uploadfileindex";
            }

    }

    Step 5 :

    Now create views folder under under  "WebContent/WEB-INF". Again create "uploadfileindex.jsp" under "WebContent/WEB-INF/views".  The code of  "uploadfileindex.jsp"  display as:

    <%@page contentType="text/html;charset=UTF-8"%>

    <%@page pageEncoding="UTF-8"%>

    <%@ page session="true"%>

    <%@taglib prefix="core" uri="http://java.sun.com/jsp/jstl/core"%>

    <html>

    <head>

    <META http-equiv="Content-Type" content="text/html;charset=UTF-8">

    <title>Welcome</title>

    </head>

    <body>

    <h2><a href="uploadfile.jsp">Upload Example</a></h2>

    <br>

    <br>

    <br>

    <br>

    <%

    if (session.getAttribute("uploadFile") != null

    && !(session.getAttribute("uploadFile")).equals("")) {

    %>

    <h3>Uploaded File</h3>

    <br>

    <img

    src="<%=request.getRealPath("/") + "/images/"

    + session.getAttribute("uploadFile")%>"

    alt="Upload Image" />

    <%

    session.removeAttribute("uploadFile");

    }

    %>

    </body>

    </html>

    Step 6 :

    Now  cerate "uploadfile.jsp" under "WebContent/WEB-INF/views".  The code of "uploadfile.jsp"  is given as :

    <%@page contentType="text/html;charset=UTF-8"%>

    <%@page pageEncoding="UTF-8"%>

    <%@ page session="false"%>

    <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>

    <html>

    <head>

    <META http-equiv="Content-Type" content="text/html;charset=UTF-8">

    <title>Upload Example</title>

    <script language="JavaScript">

    function Validate()

    {

    var image =document.getElementById("image").value;

    if(image!=''){

    var checkimg = image.toLowerCase();

    if (!checkimg.match(/(\.jpg|\.png|\.JPG|\.PNG|\.jpeg|\.JPEG)$/)){

    alert("Please enter Image File Extensions .jpg,.png,.jpeg");

    document.getElementById("image").focus();

    return false;

    }

    }

    return true;

    }

    </script>

    </head>

    <body>

    <form:form modelAttribute="uploadItem" name="frm" method="post"

    enctype="multipart/form-data" onSubmit="return Validate();">

    <fieldset><legend>Upload File</legend>

    <table>

    <tr>

    <td><form:label for="fileData" path="fileData">File</form:label><br />

    </td>

    <td><form:input path="fileData" id="image" type="file" /></td>

    </tr>

    <tr>

    <td><br />

    </td>

    <td><input type="submit" value="Upload" /></td>

    </tr>

    </table>

    </fieldset>

    </form:form>

    </body>

    </html>

    Step 7:

    Now  modify "web.xml"  as:

    <?xml version="1.0" encoding="UTF-8"?>

    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/j2ee"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd">

    <display-name>Spring3Example</display-name>

    <servlet>

    <servlet-name>dispatcher</servlet-name>

    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

    <load-on-startup>1</load-on-startup>

    </servlet>

    <servlet-mapping>

    <servlet-name>dispatcher</servlet-name>

    <url-pattern>/forms/*</url-pattern>

    </servlet-mapping>

    <welcome-file-list>

    <welcome-file>index.jsp</welcome-file>

    </welcome-file-list>

    </web-app>

    Step 8:

    Now create "dispatcher-servlet.xml"  under  "WebContent/WEB-INF". The "dispatcher-servlet.xml" file defined as:

    <?xml version="1.0" encoding="UTF-8"?>

    <beans xmlns="http://www.springframework.org/schema/beans"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"

    xmlns:context="http://www.springframework.org/schema/context"

    xmlns:mvc="http://www.springframework.org/schema/mvc"

    xsi:schemaLocation="

    http://www.springframework.org/schema/beans

    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

    http://www.springframework.org/schema/context

    http://www.springframework.org/schema/context/spring-context-3.0.xsd

    http://www.springframework.org/schema/mvc

    http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd

    ">

    <!-- Enable annotation driven controllers, validation etc... -->

    <mvc:annotation-driven />

    <context:component-scan base-package="net.roseindia.controllers" />

    <bean id="viewResolver"

    class="org.springframework.web.servlet.view.InternalResourceViewResolver">

    <property name="prefix">

    <value>/WEB-INF/views/</value>

    </property>

    <property name="suffix">

    <value>.jsp</value>

    </property>

    </bean>

    <bean id="messageSource"

    class="org.springframework.context.support.ReloadableResourceBundleMessageSource">

    <property name="basename" value="/WEB-INF/messages" />

    </bean>

    <!-- Configure the multipart resolver -->

    <bean id="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

    </bean>

    </beans>

    Where  bean " multipartResolver"  use for file upload and it defined as:

    <!-- Configure the multipart resolver -->

    <bean id="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

    </bean>

    Step 9:

    when run application display output as:

    Step 10:

    Now  click hyperlink "File Upload" then display "uploadfileindex.jsp"  page as:  

     

    Again click  hyperlink   "Upload Example" then display "uploadfile.jsp" that use for file upload. If  find any file upload time  error then again display error and again display "uploadfile.jsp"  page . Here  file uploaded size defined  10000 byte and if file size more than 10000 byte  then  file not upload and again display "uploadfile.jsp" page. If not fined any error then file upload successful and display uploaded file in   "uploadfileindex.jsp" page given as:

    click Browse and select file

    Again click "Upload"  Button

    here display Uploaded File.

    Download Code

    Download the code of the application discussed here from the following url.

    Download example code

     

    Related Tags for Spring 3 MVC File Upload, Spring MVC File Upload:

  • 相关阅读:
    miniconda安装和使用
    linux下git push出现“更新被拒绝,因为远程仓库包含您本地尚不存在的提交。”问题的处理
    win8、win10系统添加组策略的方法
    Unable to guess the mime type as no guessers are available (Did you enable the php_fileinfo extension?)
    thinkphp5 连接SQLserver
    thinkphp5 上传图片压缩
    在Vue中使用了Swiper ,从后台获取动态数据后,swiper滑动失效
    微信小程序多图上传及后台处理(后台用thinkphp3.2)
    PHP 数组下标从0开始
    微信小程序去除左上角返回的按钮
  • 原文地址:https://www.cnblogs.com/chenying99/p/2392695.html
Copyright © 2011-2022 走看看