使用传统javaweb进行文件上传

使用传统文件上传方式

1、配置依赖

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
    <spring.version>5.0.2.RELEASE</spring.version>
  </properties>

  <dependencies>
    <!-- spring -->
    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjweaver</artifactId>
      <version>1.6.8</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context-support</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-orm</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>compile</scope>
    </dependency>

    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.0</version>
      <scope>provided</scope>
    </dependency>

    <!-- javaweb传统文件上传-->
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.3.1</version>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.4</version>
    </dependency>

    <dependency>
      <groupId>jstl</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

2、配置web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>

  <!--配置前端控制器-->
  <servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--加载springmvc.xml配置文件-->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc.xml</param-value>
    </init-param>
    <!--启动服务器,创建该servlet-->
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

  <!--解决中文乱码的过滤器-->
  <filter>
    <filter-name>characterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>characterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

3、配置springmvc.xml(注意配置视图解析器对象 )

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd">

    <!--开启注解扫描,只扫描Controller注解-->
    <context:component-scan base-package="cn.flypig666">
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>

    <!--配置的视图解析器对象-->
    <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/pages/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

    <!--&lt;!&ndash;配置的视图解析器对象&ndash;&gt;-->
    <!--<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">-->
    <!--<property name="prefix" value="/WEB-INF/pages/"/>-->
    <!--<property name="suffix" value=".jsp"/>-->
    <!--</bean>-->
    <!--过滤静态资源-->
    <!--<mvc:resources location="/css/" mapping="/css/**" />-->
    <!--<mvc:resources location="/fonts/" mapping="/fonts/**"/>-->
    <!--<mvc:resources location="/images/" mapping="/images/**" />-->
    <!--<mvc:resources location="/js/" mapping="/js/**" />-->
    <!--开启SpringMVC注解的支持-->
    <mvc:annotation-driven/>

</beans>

4、编写jsp

    <h3>文件上传</h3>
    <form action="file/upload1" method="post" enctype="multipart/form-data">
        选择文件:<input type="file" name="upload1" /><br/>
        <input type="submit" value="上传" />
    </form>

5、编写controller

@Controller
@RequestMapping("/file")
public class UploadFileController {

    @RequestMapping("/upload1")
    public String fileupload1(HttpServletRequest request) throws Exception {
        System.out.println("文件上传");

        // 使用fileupload组件完成组件上传
        // 上传的位置
        // request.getSession().getServletContext():拿到最大的域对象,getRealPath():拿到某路径下的绝对路径
        String path = request.getSession().getServletContext().getRealPath("/uploads/");
        // 判断该路径是否存在
        File file = new File(path);
        if (!file.exists()){
            // 创建文件夹
            file.mkdirs();
        }

        // 解析request对象,获取上传文件项
        // 创建磁盘文件项工厂
        DiskFileItemFactory factory = new DiskFileItemFactory();
        ServletFileUpload upload = new ServletFileUpload(factory);
        // 解析request,返回一个list集合,集合里是文件项
        List<FileItem> items = upload.parseRequest(request);
        // 遍历
        for (FileItem item:items){
            // 进行判断,当前item对象是否是上传文件项
            if (item.isFormField()){
                // true说明普通表单向
            }else{
                // false说明是上传文件项
                // 获取上传文件名
                String filename = item.getName();
                // 把文件的名称设置为唯一值,uuid
                String uuid = UUID.randomUUID().toString().replace("-", "");
                filename = uuid + "_" + filename;
                // 完成文件上传
                item.write(new File(path,filename));
                // 删除临时文件,由于传统web上传会产生一个临时文件(>10kb)
                item.delete();
            }
        }

        return "success";
    }
}

原文地址:https://www.cnblogs.com/flypig666/p/11745182.html

时间: 2024-10-11 04:31:52

使用传统javaweb进行文件上传的相关文章

JavaWeb实现文件上传下载功能实例解析

转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具common-fileupload这个文件上传组件

JavaWeb实现文件上传下载功能实例解析 (好用)

转: 转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具common-fileupload这个文件上

我爱Java系列---【SpringMVC传统方式的文件上传和前端获取数据库图片在页面显示】

一.文件上传 说明:传统方式的文件上传,指的是我们上传的文件和访问的应用存在于同一台服务器上.并且上传完成之后,浏览器可能跳转. 1. 第一步:创建 maven 工程并导入 commons-fileupload 坐标 1 <dependency> 2 <groupId>commons-fileupload</groupId> 3 <artifactId>commons-fileupload</artifactId> 4 <version&g

深入分析JavaWeb Item40 -- 文件上传和下载

在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具common-fileupload这个文件上传组件.这个common-fileupload上传组件的jar包可以去apache官网上面下载,也可以在struts的lib文件夹下面找到,stru

JavaWeb(实现文件上传)(一)

通过Servlet来实现文件上传的功能 实现用户将文件上传到服务里的功能 文件上传功能解释: 当用户在前端网页点击文件上传后,javaWeb的servlet会获得用户所提交的文件并且将文件存放到服务器里. 先看servlet端 @MultipartConfig 将该标注配置到服务器servlet上面,否则会忽略掉文件的内容.并且报错,错误信息 严重: Servlet.service() for servlet [com.xyf.web6.UploadServlet] in context wit

JavaWeb之文件上传与下载&amp;邮件技术(十八)

文件上传 简介 最近发现这几篇很少写简介,说自己没时间写,可能是说服自己吧.总之能多写就多写.还有个一直存在的问题,每天写的博客质量不是很好.再次说服自己,现在处于学习阶段,写博客为了巩固知识点,以便后期作复习使用.其实我每次写博客之前笔记老早都在nopad++上写好了,所以大部分在wlw上直接粘贴的,请见谅 1. 文件上传必要前提 1. form表单:属性enctype必须取值为multipart/form-data enctype的默认值是:application/x-www-form-ur

javaWeb之文件上传

//要完成文件上传,前提: //1.表单提交方式必须是:"POST", //2.需要在表单头中添加  enctype="multipart/form-data" //需要借助以下这些jar包 commons-fileupload.jarcommons-io.jar 以下是服务端代码: public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletE

JavaWeb之文件上传、下载

时间:2016-12-17 18:07 --文件上传概述 上传不能使用BaseServlet 1.文件上传的作用    例如网络硬盘,就是用来上传和下载文件的. 2.文件上传对表单的限制    1)必须使用表单,而不能是超链接    2)表单的method必须是POST,而不能是GET    3)表单的enctype必须是multipart/form-data    4)在表单中添加type="file",即<input type="file" name=&q

JavaWeb(实现文件上传)(二)

上文中提到了使用servelt服务器读取到浏览器上保存到文件,并将它保存到本地的方法. 首先解决问题一: G:\eclipse\eclipse\eclipse\worksapceeeeeeee\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\webtest\upload 项目的上传的路径是否可以更改?如何更改? 在server服务器中 ①移除所有项目 ②启动server服务器 ③右键tomcat服务器 选择open 在