SMM框架的图片上传

1、添加依赖

<dependency>
 <groupId>commons-fileupload</groupId>
 <artifactId>commons-fileupload</artifactId>
 <version>1.3.1</version>
</dependency>

2、在spring-mvc.xml中配置
上传要配置上传大小,单文件最大不超过 5 MB,
总大小不超过 45 MB

<!--文件上传配置-->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  <!--设置字符集-->
  <property name="defaultEncoding" value="UTF-8"/>
  <!--设置上传文件大小-->
  <property name="maxUploadSizePerFile" value="5242880"/>
  <!--设置总大小-->
  <property name="maxUploadSize" value="47185920"/>
</bean>

3、页面
文件上传表单设置 enctype=“multipart/form-data”

age contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
  <title>文件上传</title>
</head>
<body>
单个文件上传
<form action="${pageContext.request.contextPath}/upload.action" method="post"
enctype="multipart/form-data">
 头像: <input type="file" name="imgName" ><input type="submit">
</form>
<hr/>
多文件上传
<form action="${pageContext.request.contextPath}/uploadMany.action" method="post"
enctype="multipart/form-data">
 头像: <input type="file" multiple="multiple" name="fileMany" ><input type="submit">
</form>
<hr/>
多文件上传 分包处理
<form action="${pageContext.request.contextPath}/uploadManyPage.action" method="post"
enctype="multipart/form-data">
 头像: <input type="file" multiple="multiple" name="fileManyPage" ><input type="submit">
</form>
<hr/>
多文件上传 分包处理 工具类
<form action="${pageContext.request.contextPath}/uploadManyPageUtil.action" method="post"
enctype="multipart/form-data">
 头像: <input type="file" multiple="multiple" name="fileMany" ><input type="submit">
</form>
</body>
</html>

4、控制器

@Controller
public class UploadController {
  /**
  * 上传单个文件
  * @param imgName
  * @return
  */
  @RequestMapping(value = "/upload.action",produces = "application/json;charset=utf-8")
  @ResponseBody
  public String upload(MultipartFile imgName){
    String originalFilename = imgName.getOriginalFilename();
    try {
      imgName.transferTo(new File("E:\\images",originalFilename));
      return "success";
   } catch (IOException e) {
      e.printStackTrace();
      return "error";
   }
 }
  @RequestMapping(value = "/uploadMany.action",produces = "application/json;charset=utf-8")
  @ResponseBody
  public String uploadMany(MultipartRequest request){
    List<MultipartFile> multipartFileList = request.getFiles("fileMany");
    try {
      for (int i = 0; multipartFileList!=null && i < multipartFileList.size() ; i++) {
        MultipartFile multipartFile = multipartFileList.get(i);
        String originalFilename = multipartFile.getOriginalFilename();
        multipartFile.transferTo(new File("E:\\images",originalFilename));
     }
      return "success";
   } catch (IOException e) {
      e.printStackTrace();
      return "error";
   }
 }
  /**
  * 多包处理图片
  * @param request
  * @return
  */
  @RequestMapping(value = "/uploadManyPage.action",produces =
"application/json;charset=utf-8")
  @ResponseBody
  public String uploadManyPage(MultipartRequest request){
    // e:/images/2019/06/04/16/51/35/UUID.jpg
    List<MultipartFile> multipartFileList = request.getFiles("fileManyPage");
    try {
      for (int i = 0; multipartFileList!=null && i < multipartFileList.size() ; i++) {
        MultipartFile multipartFile = multipartFileList.get(i);
        //获取图片的名称  part D:imgsa.jsp  q.qwe.qwe.qwe.12.asd.asd.as.jsp
        String originalFilename = multipartFile.getOriginalFilename();
        //获取文件类型
        String lastPath
=originalFilename.substring(originalFilename.lastIndexOf("."));
        //uuid
        String uuidPath = UUID.randomUUID().toString();
        //获取日期包
        String datePath = new SimpleDateFormat("yyyy\\MM\\dd\\HH\\mm\\ss").format(new
Date());
        //完成路径
        File file = new File("E:\\images",datePath);
        //判断文件夹是否存在
        if(!file.exists()){
          file.mkdirs();
       }
        String endPath ="E:\\images\\"+datePath+"\\"+uuidPath+lastPath ;
        System.out.println("endPath = " + endPath);
        //上传文件
        multipartFile.transferTo(new File(endPath));
     }
      return "success";
   } catch (IOException e) {
      e.printStackTrace();
      return "error";
   }
 }
  /**
  * 多包处理图片 工具类
  * @param request
  * @return
  */
  @RequestMapping(value = "/uploadManyPageUtil.action",produces =
"application/json;charset=utf-8")
  @ResponseBody
  public Map<String,Object> uploadManyPageUtil(MultipartRequest request){
    return FileUploadUtil.fileUploadUtil(request,"fileMany","E:\\images\\");
 }
}

房屋发布前台页面(发布出租房)


  <FORM id=add_action method=post name=add.action 
action="addHouse" enctype="multipart/form-data">
  <%--multipart/form-data 大文件传输表单设置--%>
<DIV class=infos>
<TABLE class=field>
  <TBODY>
  <%--<TR>--%>
    <%--<TD class=field>用户id</TD>--%>
    <%--<TD><INPUT id=userID class=text type=text name=id value="${user.id}"> </TD></TR>--%>
  <%--<TR>--%>
  <TR>
    <TD class=field>标  题:</TD>
    <TD><INPUT id=add_action_title class=text type=text name=title> </TD></TR>
  <TR>
    <TD class=field>户  型:</TD>
    <TD><SELECT class=text name=typeId>
      <c:forEach items="${types}" var="t">
        <OPTION value=${t.id}>${t.name}</OPTION>
      </c:forEach>
    </SELECT></TD></TR>
  <TR>
    <TD class=field>面  积:</TD>
    <TD><INPUT id=add_action_floorage class=text type=text 
name=floorage></TD></TR>
  <TR>
    <TD class=field>价  格:</TD>
    <TD><INPUT id=add_action_price class=text type=text name=price> </TD></TR>
  <TR>
    <TD class=field>房产证日期:</TD>
    <TD><INPUT class=text type=date name=pubdate></TD></TR>
  <TR>
    <TD class=field>位  置:</TD>
    <TD>区:<SELECT class=text name=district_id id="district">
      <c:forEach items="${districts}" var="d">
        <OPTION value=${d.id}>${d.name}</OPTION>
      </c:forEach>

    </SELECT> 街:<SELECT class=text
        name=streetId id="street"><OPTION selected value=1001>中关村大街</OPTION></SELECT> </TD></TR>
  <TR>
    <TD class=field>联系方式:</TD>
    <TD><INPUT id=add_action_contact class=text type=text name=contact> </TD></TR>
  <TR>
  <TR>
    <TD class=field>图片上传:</TD>
    <TD><INPUT id=add1_action_contact class=text type=file name=pfile> </TD></TR>
  <TR>
    <TD class=field>详细信息:</TD>
    <TD><TEXTAREA name=description></TEXTAREA></TD></TR></TBODY></TABLE>
<DIV class=buttons><INPUT   value=立即发布 type=submit>
</DIV></DIV></FORM>

控制器代码部分

@RequestMapping("addHouse")
    public String addUser(House house, HttpSession session, @RequestParam(value = "pfile",required = false) MultipartFile file) throws IOException {
        //将文件保存在服务器中  G:\\images
         // 获取文件名   例如: xxx.jpg
        String fname = file.getOriginalFilename();
//        截取文件类型  .jpg
        String expName = fname.substring(fname.lastIndexOf("."));
        String uuid= UUID.randomUUID().toString();
        String afterPath=new SimpleDateFormat("yyyy\\MM\\dd\\HH\\mm\\ss").format(new Date());
//        以年月日为文件隔离,uuid为文件名称
//        最终保存路径
        String saveName=afterPath+"\\"+uuid+expName;
        System.out.println("saveName = " + saveName);
        File fineFile=new File("G:\\images\\",afterPath);
        //判断文件夹是否存在,不存的话新建文件夹
        if (!fineFile.exists()){
            fineFile.mkdirs();
        }
//        保存
        file.transferTo(new File("G:\\images\\",saveName));
        //保存数据库的记录  house已经接收部分表单数据

        //保存数据库的记录  house已经接收部分表单数据
        //设置编号
        house.setId(System.currentTimeMillis()+"");
//        设置文件审核状态
        house.setIspass(0);
        house.setIsdel(0);
//        保存文件路径
        house.setPath(saveName);
      //调用服务层保存方法
        int r = houseService.addHouse(house);
        if(r==1){
            return "guanli";
        }else {
            fineFile.delete();
            return "error";
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值