ssm本地上传文件

news/2024/10/30 17:27:44/

SSM实现图片本地上传并保存到本地磁盘中

功能描述

实现房屋租赁网站中添加房屋信息的功能。其中add.jsp页面是一个表单提交信息——添加房屋

  • 首先输入房屋的相关信息,并上传房屋的图片。上传成功后会将图片的名字添加到数据库中
  • 成功后跳转到success.jsp,从数据库读取房屋的图片路径,并显示

add.jsp

<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%>
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>公寓管理系统 - 房屋信息添加</title><link rel="stylesheet" href="../../css/main.css"><link rel="stylesheet" href="../../lib/font-awesome/css/font-awesome.css">
</head>
<body>
<div class="box"><h3>添加房屋信息</h3><form action="${pageContext.request.contextPath}/house/add" method="post" enctype="multipart/form-data"><table class="form-table"><tr><td>地区</td><td colspan="3" class="control"><input type="text" name="address" placeholder="填写地区"></td></tr><tr><td>楼层</td><td colspan="3" class="control"><input type="text" name="floor" placeholder="楼层"></td></tr><tr><td>房间号</td><td colspan="3" class="control"><input type="text" name="roomNum" placeholder="房间号"></td></tr><tr><td>面积(平米)</td><td colspan="3" class="control"><input type="text" name="area" placeholder="面积"></td></tr><tr><td>朝向</td><td colspan="3" class="control"><input type="text" name="dir" placeholder="朝向"></td></tr><tr><td>装修类型</td><td colspan="3" class="control"><select name="deco"><option value="1">毛坯</option><option value="2">精装</option></select></td></tr><tr><td>是否双气</td><td colspan="3" class="control"><select name="air"><option value="1">是</option><option value="2">否</option></select></td></tr><tr><td>价格(元/月)</td><td colspan="3" class="control"><input type="text" name="price" placeholder="价格"></td></tr><tr><td>出租状态</td><td colspan="3" class="control"><select name="rentStatus"><option value="1">已出租</option><option value="2">未出租</option><option value="3">停止出租</option></select></td></tr><tr><td>房屋图片</td><td colspan="3" class="control"><input type="file" name="houseImage" placeholder="选择图片"></td></tr></table><div class="buttons"><input class="btn btn-primary va-bottom" type="submit" value="保存">&nbsp;&nbsp;<a class="btn btn-default" href="javascript:history.go(-1)">返回</a></div></form>
</div>
</body>
</html>

注意

  1. enctype="multipart/form-data":指表单数据有多部份构成,既有文本数据,又有文件等二进制数据的意思。只有multipart/form-data才能完整的传递文件数据
  2. 输入框中的name="houseImage"要与后台的MultipartFile类型的属性名要一致,且不能和实体类house中表示图片的属性名相同

首先要注入依赖

 <!--图片上传--><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.4</version></dependency><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.3</version></dependency>

在SpringMVC中配置:

    <!--文件上传--><bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><property name="maxUploadSize" value="104857600"/><property name="defaultEncoding" value="utf-8"/><property name="maxInMemorySize" value="40960"/></bean>

HouseController

    @RequestMapping("/add")public String add(House house, MultipartFile houseImage, HttpServletRequest request) throws IOException {house.setAddTime(LocalDateTime.now());house.setUpdateTime(LocalDateTime.now());if (houseImage.getSize() != 0) {String path = "D:\\Soft\\IntelliJ IDEA 2023.1.1\\Workspace\\ssmTest\\upload";String imageName = UplodUtil.upload(houseImage, path);house.setImage(imageName);}System.out.println(house);request.getSession().setAttribute("house", house);return "success";}

path = “D:\Soft\IntelliJ IDEA 2023.1.1\Workspace\ssmTest\upload” 是要保存图片的地址。就是上传的图片都存在这个文件夹中

数据库:

img

还需要一个工具类UploadUtil

public class UplodUtil {public static String upload(MultipartFile file, String basePath) {String uuid = UUID.randomUUID().toString();String orgFileName = file.getOriginalFilename();String ext = "." + FilenameUtils.getExtension(orgFileName);String fileName = uuid + ext;try {File targetFile = new File(basePath, fileName);FileUtils.writeByteArrayToFile(targetFile, file.getBytes());return fileName;} catch (IOException e) {e.printStackTrace();}return "";}}

配置虚拟目录

方法一:

直接在Tomcat中的server.xml中的host标签中添加:

<Context path="/upload" docBase="D:\\Soft\\IntelliJ IDEA 2023.1.1\\Workspace\\ssmTest\\upload" crossContext="true" reloadable="true" debug="0"/>

path:是虚拟路径

docBase:是保存图片的绝对地址

方法二:

img

img

选择你要保存图片的文件夹

img

img

success.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<img src="/upload/${house.image}">
</body>
</html>

img


http://www.ppmy.cn/news/282006.html

相关文章

c++ error:C2504 提示未定义基类

【背景】 说明&#xff1a;如何打开1处&#xff0c; 注释掉3&#xff0c;则会提示4的错误。如果注释掉1&#xff0c;打开3&#xff0c;则正确。总之&#xff0c;在定义函数中将基类的头文件放在 子类前&#xff0c;很简单&#xff0c;但一不小心很容易出错误。

没错,这就是AIR-CT2504-K9的内心!

WLC2504目前已经是思科一款比较老的无线控制器了。其体积小巧&#xff0c;非常适用于小型无线网络或分支机构无线部署场景&#xff0c;它最多支持75个AP&#xff0c;Release8.5版本也基本上就是它的最后一个版本了。 但是由于其带宽的限制&#xff0c;可能不能很好的发挥出某些…

error C2504: “CDialogEx”: 未定义基类-报错解决

当MFC写下如下代码 Dlg d; //Dlg为可视化界面的类 Dlg.DoModal();就会出现 Dlg class类没有DoModal error C2504: “CDialogEx”: 未定义基类-报错解决 在MFC文件中添加资源窗口&#xff0c;后添加新类 随后在h头文件中出现 CDialogEx C class 未定义基类 添加 #include "…

错误C2504:继承未定义基类

错误C2504&#xff1a;继承未定义基类&#xff0c;头文件相互包含

3年经验面试20K+测试岗,看到这样的面试题我懵了....

我要跳槽&#xff01;我是着急忙慌的准备简历——3年软件测试经验&#xff0c;可独立测试大型产品项目&#xff0c;熟悉项目测试流程...薪资要求&#xff1f;3年测试经验起码能要个20K吧 我加班肝了一页半简历&#xff0c;投出去一周&#xff0c;面试电话倒是不少&#xff0c;…

error:C2504 :“xxxxxxx“未定义基类

自己遇到该问题的经过&#xff1a; 1、QT项目中已有一个类CModuleFile&#xff0c;类B继承类CModuleFile。&#xff08;此时可以正常编译&#xff09;。 2、重命名类CModuleFile为类CModuleFileDeal。&#xff08;此时可以正常编译&#xff09;。 3、新建一个类CModuleFile。…

杭电2504又见GCD逆推最大公约数

老规矩&#xff0c;先上题目 杭电oj2504 题目的意思大概是&#xff1a; 给三个数,知道二个数的最大公约数b和其中一个数a&#xff0c;要求另外一个数c。 思路&#xff1a;首先我们应该知道所求的c一定是b的倍数&#xff0c;不然约不了分嘛&#xff0c;这样就可以不要一个一个往…

C2504:未定义的基类

今天在做MFC的时候&#xff0c;总是编译报错&#xff1a;error C2504 :未定义基类 我是看另一个人的博客才发现错误的。 我的错误在于 B继承A&#xff0c;A父类&#xff0c;B子类。 由于某一个功能的需要错误的在A.h中 #include"B.h",而本来由于B继承A,所以B.h中也有…