SSM框架中如何简便上传文件表单
此种方式上传文件相对简单,以下均经测试成功,才提供到此。
以下为单个文件上传方式
分析:本次的工作目的是根据一级标题产生对应的二级标题,在每个二级标题下对应一个(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框架中如何简便上传文件表单的更多相关文章
- ssm项目中常用的上传文件
在项目中,上传文件一般是必不可少的,所以今天学到新的上传方式,就干脆将学习过的上传方式记录一下 一.表单直接上传图片 表单头要设置 <form action="" metho ...
- 上传文件表单file,限制上传文件类型的方法--参数accept
我们使用<input type="file" />来上传文件,但是当你只想要上传某种格式的文件,比如说(jpg)文件时.可以通过accept来限制. <form& ...
- asp.net中FileUpload得到上传文件的完整路径
asp.net中FileUpload得到上传文件的完整路径 Response.Write("完整路径:" + Server.MapPath(FileUpload1.PostedFi ...
- Java中使用HttpPost上传文件以及HttpGet进行API请求(包含HttpPost上传文件)
Java中使用HttpPost上传文件以及HttpGet进行API请求(包含HttpPost上传文件) 一.HttpPost上传文件 public static String getSuffix(fi ...
- ajax方式提交带文件上传的表单,上传后不跳转
ajax方式提交带文件上传的表单 一般的表单都是通过ajax方式提交,所以碰到带文件上传的表单就比较麻烦.基本原理就是在页面增加一个隐藏iframe,然后通过ajax提交除文件之外的表单数据,在表单数 ...
- 使用XWAF框架(2)——上传文件
XWAF提供了上传文件的HttpFileUploader工具类,具备强大的多文件上传.文件类型过滤.文件大小限制.存储目录设置.文件名称更改等功能,简化了Web应用开发的编程工作. 它能同时解析表单参 ...
- Spring中servletFileUpload完成上传文件以及文本的处理
JSP: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEnco ...
- Linux中ftp不能上传文件/目录的解决办法
在linux中不能上传文件或文件夹最多的问题就是权限问题,但有时也不一定是权限问题了,像我就是空间不够用了,下面我来总结一些ftp不能上传文件/目录的解决办法 在排除用户组和权限等问题后,最可能引 ...
- 使用PuTTY在Windows中向Linux上传文件
为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/SJQ. http://www.cnblogs.com/shijiaqi1066/p/3843207.html ...
随机推荐
- rpm包与 yum 安装与卸载
rpm包的安装: 1.安装一个包 # rpm -ivh 2.升级一个包 # rpm -Uvh 3.移走一个包 # rpm -e 4.安装参数 --force 即使覆盖属于其它包的文件也强迫安 ...
- C#发送内置图片的html格式邮件的代码
将写内容过程经常用的内容段备份一次,下面的内容是关于C#发送内置图片的html格式邮件的内容,应该对码农们也有用处.MailMessage m = new MailMessage();m.Subjec ...
- SynchronousQueueDemo
1.ArrayDeque, (数组双端队列) 2.PriorityQueue, (优先级队列) 3.ConcurrentLinkedQueue, (基于链表的并发队列) 4.DelayQueue, ( ...
- MTK 使用iptable 命令来完成网络路由(android WIFI/4G分享网络)
很多时候,总有些奇怪的需求,这时候是发挥我们的聪明才智的时候!! 有客户的需求是: 公网 WIFI 4G/其他网络 以太网1 以太网2 内部设备 描述下需求:现今有一个控制设备,里面有WIFI,物联网 ...
- 1.2:Properties
文章著作权归作者所有.转载请联系作者,并在文中注明出处,给出原文链接. 本系列原更新于作者的github博客,这里给出链接. 上一节我们了解了一个Shader的基本结构,这一节,我们从 Propert ...
- Elasticsearch-搭建自己的搜索系统
参考链接: https://blog.csdn.net/weixin_42730079/article/details/81113806 https://www.cnblogs.com/dreamro ...
- nginx 1.14.2 配置文件优化精选
user nobody; worker_processes ; worker_rlimit_nofile ; events { use epoll; worker_connections ; } ht ...
- The dependency `XXX` is not used in any concrete target.
1.在新建项目,引入CocoaPod时,当创建了podfile文件后,执行pod install时报一下错误 2.这是因为 这个第三方不知道用于哪个target,所以必须指定target 解决方案 ...
- Android中的数据储存
数据的储存是一个十分重要的功能,它涉及到各种类型的数据,各种的储存方式,今天就接触了Android中数据储存的简单应用,有一种方式是可以将存入的数据原封不动的存储起来,这里要用到openfileout ...
- 解决pycharm输入法不跟随的方法
先上图,这个pycharm编辑器默认条件下输入中文时输入法框的状态 这个是更改后的状态 修改方法就是将android studio中的jre目录 拷贝至 下,并更改名称为jre64 重新启动pycha ...