此种方式上传文件相对简单,以下均经测试成功,才提供到此。

以下为单个文件上传方式

分析:本次的工作目的是根据一级标题产生对应的二级标题,在每个二级标题下对应一个(file字段)新闻文件,当点击新闻文件的时候显示新闻文件内容,所以需要上传新闻文件。很多表单中都会有文件上传这一项,将文件上传到数据库 可以理解为将文件路径上传到数据库,而真正的文件储存在IDEA编译运行之后产生的(target/项目名称/指明的目录名) 下(也可以储存在服务器上如Tomact),另外,本次实现属于单个文件实现,在上传时单独给文件赋值别称。以下是实现步骤:

使用工具:IDEA   MySQL     框架:Spring、Springmvc 、Mybatis

1、基础条件为根据一级标题的Id查询到对应的二级标题全部信息,接收二级标题信息的是一个List集合,泛型为二级标题对应的实体类。注意一点:需要在二级标题中创建一级标题的实体对象。

2、导入jar包(我使用的是maven仓库),并且需要在pom.xml、springmvc.xml中配置

Pom.xml配置

(1)定义依赖版本号

<properties>

<commons-fileupload.version>1.3.1</commons-fileupload.version>

<commons-io.version>1.3.2</commons-io.version>

</properties>

(2)配置组件

<dependencies>
      <dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>${commons-fileupload.version}</version>
  </dependency>

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-io</artifactId>
    <version>${commons-io.version}</version>
   </dependency>

</dependencies>

Springmvc.xml对象创建配置
 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!-- 设置默认编码 -->
    <property name="defaultEncoding" value="utf-8"></property>
    <!-- 上传图片最大大小5M-->
    <property name="maxUploadSize" value="5242440"></property>
</bean>

3、接下来是代码实现

JSP页面实现(其他普通属性不在赘述):

(1)<form name="form1" method="post" 

action="请求Controller路径" enctype="multipart/form-data">

注意:method="post"为表单请求方式,优点是安全并且不限制大小,红色部分表示以二进制码形式传输数据,用于上传文件,必须填写。

下面是表单中<input标签>

<input type="file" name="file1">

(2)Controller页面实现

package com.jin.controller;

import com.jin.domain.Secondleveltitle;

import com.jin.service.SecondService;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;

import java.io.File;

import java.io.IOException;

@Controller

@RequestMapping("/second")

public class SecondController {

@Autowired

private SecondService secondservice;

//二级标题发布

@RequestMapping(value = "/secondsave",method = RequestMethod.POST)

public String secondsave(@RequestParam(value = "file1") MultipartFile file, HttpServletRequest request, Secondleveltitle second) {

try {

//上传后的地址,注意("/upload")是表示文件上传后的目标文件夹

String realPath = request.getSession().getServletContext().getRealPath("/upload");

System.out.println("打印文件上传的路径"+realPath);

//获取文件名

String filename = file.getOriginalFilename();

//获取文件后缀名

String extensionname = filename.substring(filename.lastIndexOf(".") + 1);

//给上传的文件起别名,有很多种方式

String newFilename=String.valueOf(System.currentTimeMillis())+"."+extensionname;

//创建File对象,传入目标路径参数,和新的文件别名

File dir=new File(realPath,newFilename);

if (!dir.exists()){//如果dir代表的文件不存在,则创建它,

dir.mkdirs();//

}

//如果存在则直接执行下面操作

file.transferTo(dir);//将上传的实体文件复制到指定目录upload下

second.setFile(newFilename);//将文件名赋值给实体类,然后一并存到数据库

secondservice.secondSave(second);//调用后台方法,将对象存进数据库

System.out.println("测试是否执行完毕");

} catch (IOException e) {

e.printStackTrace();

}

return "title_file_sucess";//执行完毕,返回一个逻辑视图

}

}

4、最后一步非常重要,需要在Tomact服务器中找到设置的upload文件夹,即配置虚拟目录

点击中心绿色+号,选择External Source..

找到生成的upload文件夹,我的在程序的target目录下找到

在Application context中填写文件夹名如 /upload

以上测试即可。

成功截图:数据库文件名称

Upload文件夹中的文件实体

文件打开展示

异常产生已改进点:一个file类型异常,无法赋值。原因是在实体类中有个String 类型的file是储存文件名用,在JSP表单中有

此name并非是和实体对象一致,其type类型是 file。所以,两个名字不要一样。

转载请注明出处

SSM框架中如何简便上传文件表单的更多相关文章

  1. ssm项目中常用的上传文件

    在项目中,上传文件一般是必不可少的,所以今天学到新的上传方式,就干脆将学习过的上传方式记录一下 一.表单直接上传图片 表单头要设置 <form action="" metho ...

  2. 上传文件表单file,限制上传文件类型的方法--参数accept

    我们使用<input type="file" />来上传文件,但是当你只想要上传某种格式的文件,比如说(jpg)文件时.可以通过accept来限制. <form& ...

  3. asp.net中FileUpload得到上传文件的完整路径

    asp.net中FileUpload得到上传文件的完整路径 Response.Write("完整路径:" + Server.MapPath(FileUpload1.PostedFi ...

  4. Java中使用HttpPost上传文件以及HttpGet进行API请求(包含HttpPost上传文件)

    Java中使用HttpPost上传文件以及HttpGet进行API请求(包含HttpPost上传文件) 一.HttpPost上传文件 public static String getSuffix(fi ...

  5. ajax方式提交带文件上传的表单,上传后不跳转

    ajax方式提交带文件上传的表单 一般的表单都是通过ajax方式提交,所以碰到带文件上传的表单就比较麻烦.基本原理就是在页面增加一个隐藏iframe,然后通过ajax提交除文件之外的表单数据,在表单数 ...

  6. 使用XWAF框架(2)——上传文件

    XWAF提供了上传文件的HttpFileUploader工具类,具备强大的多文件上传.文件类型过滤.文件大小限制.存储目录设置.文件名称更改等功能,简化了Web应用开发的编程工作. 它能同时解析表单参 ...

  7. Spring中servletFileUpload完成上传文件以及文本的处理

    JSP: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEnco ...

  8. Linux中ftp不能上传文件/目录的解决办法

    在linux中不能上传文件或文件夹最多的问题就是权限问题,但有时也不一定是权限问题了,像我就是空间不够用了,下面我来总结一些ftp不能上传文件/目录的解决办法   在排除用户组和权限等问题后,最可能引 ...

  9. 使用PuTTY在Windows中向Linux上传文件

    为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/SJQ. http://www.cnblogs.com/shijiaqi1066/p/3843207.html ...

随机推荐

  1. 让网站永久拥有HTTPS - 申请免费SSL证书并自动续期 Let’s Encrypt

    让网站永久拥有HTTPS - 申请免费SSL证书并自动续期 Let’s Encrypt 为什么要用HTTPS  网站没有使用HTTPS的时候,浏览器一般会报不安全,而且在别人访问这个网站的时候,很有可 ...

  2. 向日葵连CentOS

    TeamViewer可以连CentOS,但TeamViewer最近老是提示“检测为商业用途”,5分钟就会自动断,用起来非常不爽,所以决定改用向日葵试下,向日葵目前的口碑也不错,更何况是国产软件,更要支 ...

  3. phpstrom 快速定位到当前编辑文件

    方法1(手动定位): 打开所要查找的文件,然后点击上图中红框中的按钮即可快速定位. 方法二(自动定位): Project面板右上角有个准星类的图标,点击后勾选上Autoscorll from Sour ...

  4. Developing Vert.x Modules with Gradle

    ========= https://www.techempower.com/benchmarks/#section=data-r12&hw=peak&test=json ======= ...

  5. win10 右键添加“在此打开powershell”

    计算机\HKEY_CLASSES_ROOT\Directory\Background\shell\ 上图中的字符串,直接去下图中的位置复制过来就好

  6. 【android】安卓手机连接电脑了,但是adb devices找不到设备及找到设备但无权限的问题

    安卓手机连接电脑的时候,会遇到adb连接失败,adb devices为空,或者连接成功,但是显示unauthorized的情况.遇到这种情况,一般认为是手机驱动安装失败,会选择重新下载安装驱动,如果还 ...

  7. javascript 之 第七章第一节(递归)

    先举例: function factorial(num) { ) { return num; } else { ); } } //输出120 //进一步去思考有名字的函数,且名字不会有变化的情况下,这 ...

  8. Eclipse中Lombok的安装和注解说明

    Lombok 可用来帮助开发人员消除 Java 的重复代码,尤其是对于简单的 Java 对象(POJO),比如说getter/setter/toString等方法的编写.它通过注解实现这一目的. 官网 ...

  9. Unity3D|-使用ScriptableObject脚本化对象来制作一个简单的对象池

    ScriptableObject是一个用于生成单独Asset的结构.同时,它也能被称为是Unity中用于处理序列化的结构. 可以作为我们存储资源数据的有效方案.同时此资源可以作为我们AB包的有效资源! ...

  10. day22

    # day22 ## 复习 ```python# 1.内存管理# 引用计数:垃圾回收机制工作原理# -- 引用就 +1 ,释放就 -1 , 当计数为0时,就会被垃圾回收机制回收 # 标记清除:解决循环 ...